在这种情况下,将三元运算符视为一种方法。说
a ? b :c的话(出于您正在考虑的目的和目的,请参阅lasseespeholt的评论)等同于调用伪代码方法:
ternary(a, b, c) if a return b else return c
这就是为什么人们可以说类似的话的原因
x = a ? b : c;基本上就像说
x = ternary(a, b,c)。当您说时
(condition) ? doThis() : doThat(),实际上是在说:
if condition return doThis()else return doThat()
看看如果我们尝试用方法代替它们返回的结果会发生什么
if condition return ??? else return ???
考虑甚至没有意义。
doThis()并且
doThat()不返回任何内容,因为
void它不是可实例化的类型,所以该
ternary方法也不返回任何内容,因此Java不知道如何处理您的语句并抱怨。
有很多解决方法,但是它们都是不好的做法(您可以将方法修改为具有返回值,但不对其返回值做任何事情,可以创建新方法来调用您的方法,然后返回null等。
)。
if在这种情况下,只使用一条语句会更好。
编辑 此外,还有一个更大的问题。即使您返回值,Java也不会考虑
a ? b : c任何意义上的语句。



