Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java if/else的可选方式_Java_Optional - Fatal编程技术网

Java 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

我试图通过使用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 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");