if/else 的可选方式

Optional way of if / else

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

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

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

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

谢谢

jdk-9 开始,您可以使用 ifPresentOrElse

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

代码

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

I'm trying to avoid the traditional if / else block

这就是问题所在。没有理由重写您提供给 Optional 的片段。您不会以任何方式从中受益。

if-else 是一个控制流语句,而 Optional 是一个 util that indicates the absence of a return value 有一堆类似函数的方法可以很好地处理它。

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

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

否则,保持原样。你总能找到更有趣的东西来玩。