Java if/else的可选方式
我试图通过使用Java Optional来避免传统的if/else块。 但我仍然不理解如何实施下一个要求:Java if/else的可选方式,java,optional,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"); } 谢谢,您可以使用ifpresentorese public void ifPresent
if (x != null)
foo1();
else
foo2();
public void foo1(){
print("X not null");
}
public void foo2(){
print("X is null");
}
谢谢,您可以使用ifpresentorese
public void ifPresentOrElse(Consumer<? super T> action,
Runnable emptyAction)
我试图避免传统的if/else
块
这就是问题所在。没有理由重写您提供给Optional
的代码段。你无论如何都不会从中受益
if-else
是一个控制流语句,而Optional
是一个util,有一系列类似函数的方法可以很好地处理它
如果您正在寻找快捷方式,或更精确的表达方式,请使用三元运算符
print(x != null ? "X not null" : "X is null");
否则,请保持原样。你总能找到一些更有趣的东西来玩。你能解释一下如何避免传统的if/else
块是个问题吗?“没有理由这么做”这一事实并不一定使它成为问题。。。另外,有趣的是,有人建议使用条件运算符作为摆脱if/else
块的更好选择。但请注意,对于void函数(可能需要调用),您不能(至少我不能,也许您有一个想法,我被卡住了)让三元运算符来做这个把戏,除非你把它们转换成返回一个无意义值的东西,比如布尔值true,然后你忽略它。@ernest_k个人说,考虑将无害的if else
重写为不合理的可选的是一个问题…@JeremyKahan这些方法可能会返回字符串
,这将是要打印的值:它不会那么无意义。。。不过,这个例子看起来相当肤浅。所以没什么好谈的了…@AndrewTobilko是的,这是一个很好的观点。这与我读到的关于输出是副作用的设计原则是一致的,你不希望你的低级函数有它们。
print(x != null ? "X not null" : "X is null");