簡體   English   中英

有效地將傳統的嵌套 if else 條件轉換為 java 8 個選項

[英]Converting traditional nested if else condition to java 8 optionals efficiently

Object ab = someMethod1()

if(ab != null) {
        someMethod2(ab);
} else {
       someMethod3()
}

轉換為 java 選件

Optional.ofNullable(someMethod1()).map( e ->   someMethod2(ab))
          .orElseGet(() ->  someMethod3() );

但是你能幫我轉換一下嗎//如果有其他條件存在多個嵌套,很難轉換為 java 8 個選項

  public void  a() {
        Object ab = someMethod1();        
        if(ab != null) {
               Object cd = someMethod2();       
                  if(cd !=  null) {       
                      Object ef = someMethod3();    
                      if( ef!= null) {         
                            someMethod4();               
                      } else {        
                           elseMethod3()                         
                      }       
                   
                  } else {
                    elseMethod2()
                  }    
        } else {     
            elseMethod1();    
        }   
    }
public class a {

    static String method1(String agr) {
        return "method1";
    }
    
    static String method2(String agr) {
        return "method2";
    }
    
    static String method3(String agr) {
        return "method3";
    }
    
    public static Optional<String> cal(Optional<String> optionalS, Function<String, String> function, String agr) {
        if (optionalS.isPresent())
            return Optional.of(function.apply(agr));
    
        return Optional.empty();
    }
    
    public static void main(String agr[]) {
        cal(Optional.empty(), a::method1, "agr func1").orElseGet(() ->
            cal(Optional.empty(), a::method2, "agr func2").orElseGet(() ->
                cal(Optional.ofNullable("c"), a::method3, "agr func3").orElse("final result")
            )
        );
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM