Vol*_*ort 28 java conditional-operator
在像http://en.wikipedia.org/wiki/?这样的页面中:三元/条件运算符?:
似乎用于条件赋值.我尝试将它用于方法调用,如下所示:
(condition) ? doThis() : doThat();
Run Code Online (Sandbox Code Playgroud)
两种方法都返回void.Java告诉我这不是一个声明.
所以,我猜我不能做条件方法调用......或者我可以吗?
Jod*_*aka 22
在这种情况下,可以将三元运算符视为一种方法.说a ? b : c
是(对于你正在考虑的意图和目的,请参阅lasseespeholt的评论)等同于调用伪代码方法:
ternary(a, b, c)
if a
return b
else
return c
Run Code Online (Sandbox Code Playgroud)
这就是为什么人们会说出类似的话x = a ? b : c
; 它基本上就像说x = ternary(a, b, c)
.当你说(condition) ? doThis() : doThat()
,你实际上在说:
if condition
return doThis()
else
return doThat()
Run Code Online (Sandbox Code Playgroud)
看看如果我们试图用这些方法替换它们返回的内容会发生什么
if condition
return ???
else
return ???
Run Code Online (Sandbox Code Playgroud)
考虑它甚至没有意义. doThis()
并且doThat()
不返回任何内容,因为void
它不是可实例化的类型,因此该ternary
方法也不能返回任何内容,因此Java不知道如何处理您的语句和抱怨.
有很多方法,但它们都是不好的做法(你可以修改你的方法以获得返回值,但不对它们返回的内容做任何事情,你可以创建调用你的方法然后返回null的新方法,等等).if
在这种情况下,你只是使用一个语句会好得多.
编辑 此外,还有一个更大的问题.即使您返回值,Java也不会考虑a ? b : c
任何语句.
归档时间: |
|
查看次数: |
13708 次 |
最近记录: |