if / else的可选方式

时间:2019-07-29 12:02:26

标签: java optional

我试图通过使用Java Optional来避免传统的if / else阻塞。 但是我仍然缺少对如何实现下一个要求的理解:

    if (x != null)
       foo1();
    else
       foo2();

public void foo1(){
   print("X not null");
}

public void foo2(){
   print("X is null");
}

谢谢

2 个答案:

答案 0 :(得分:7)

jdk-9中,您可以使用ifPresentOrElse

public void ifPresentOrElse​(Consumer<? super T> action,
                        Runnable emptyAction)

代码

Optional.ofNullable(x).ifPresentOrElse(x->foo1(), ()->foo2());

答案 1 :(得分:2)

  

我正在尝试避免传统的if / else阻止

就是这个问题。没有理由重写您提供给Optional的代码段。您将不会从中受益。

if-else是一个控制流语句,而Optional是一个实用程序that indicates the absence of a return value,具有许多类似于函数的方法来很好地处理它。

如果您正在寻找快捷方式,或更精确的表达方式,请使用三元运算符。

print(x != null ? "X not null" : "X is null");

否则,保持原样。您总是可以找到一些更有趣的东西。