在这种情况下,想像三角运算符一样的方法。说一个? b:c(对于您正在考虑的意图和目的,请参阅lasseespeholt的评论)等同于调用伪代码方法:
ternary(a, b, c)
if a
return b
else
return c
这就是为什么人们可以说x = a的东西? b:c它基本上就像说x =三元(a,b,c)。当你说(条件)? doThis():doThat(),你实际上说:
if condition
return doThis()
else
return doThat()
看看如果我们尝试用这些方法替代他们返回的方法会发生什么
if condition
return ???
else
return ???
考虑它甚至没有意义。 doThis()和doThat()不返回任何东西,因为void不是一个可实例化的类型,所以三元方法也不能返回任何东西,所以Java不知道该怎么处理你的陈述和抱怨。
有这方面的方法,但它们都是不好的做法(您可以修改方法以获得返回值,但不要对其返回的任何内容进行任何操作,可以创建调用方法然后返回null的新方法等) )。在这种情况下,只需使用if语句就好多了。
编辑此外,还有一个更大的问题。即使你返回值,Java也不考虑一个? b:任何意义上的陈述。