TernaryOperator(?:)用于Java函数。我们能达到多近?

时间:2018-07-31 10:07:27

标签: java

Java具有三元运算符,可用于变量:

(a > 0) ? b++ : c--;

什么是a,b,c是函数?我测试了类似的东西(a返回布尔值,b&c无效):

a() ? b() : c(); 

但是即使我的Eclipse也不允许这样做。

我可以通过编程接近多远 (以生成功能以最少的行数实现此功能) ?< / strong>

我知道在其他语言(例如Javascript)中,我只能将函数作为参数传递,但是在Java中却没有遇到类似的问题。

修改

由于问题群太少,我们已经讨论了附带条件,但这是我想要的,这是一个现实世界中的问题:

我要实现的是根据第一个函数的返回值来单行调用第二个或第三个函数。

当然要用最少的代码。

我尝试过的是我现在知道的用于其他事物的三元体系。

3 个答案:

答案 0 :(得分:1)

如果您通过Java Ternary Operator,我们将基于布尔表达式(布尔字段或评估为布尔结果的语句(用于赋值))为变量赋值。在上面的代码中,您尝试使用返回值void调用函数,这在Java中的三元运算符中是不允许的。

  

三元运算符,也称为条件运算符,可以是   用作Java if / then / else语法的替代方法

答案 1 :(得分:1)

正如其他人已经解释的那样,条件运算符是一个计算结果为值的表达式,因此不能应用于void方法。

如果您需要单行丢弃任何返回值,请使用简单的if-else:

if (a()) b(); else c();

答案 2 :(得分:0)

您只能将三元运算符用作表达式,而不能用作语句。这不是if-else的简单语法-关键是,如果a()返回true,则 entire表达式解析为b()的结果,否则整个表达式都将解析到c()的结果。

因此,bc返回void没有意义。他们必须返回一些东西,而他们共享的最具体的类型将是整个表达式的结果类型。