JAVA使用三元运算符调用方法

Tra*_*ore 16 java ternary

我想用?决定我想要调用哪种方法,但我不需要分配变量.我的问题:有没有办法使用三元运算符而不分配变量?

(something i dont need) = (x == 1)? doThisMethod():doThatMethod()
Run Code Online (Sandbox Code Playgroud)

代替

if(x == 1) {
    doThisMethod()
} else {
    doThatMethod()
}
Run Code Online (Sandbox Code Playgroud)

Kev*_*lia 22

这不起作用,因为它不是三元运算符的预期用途.

如果你真的希望它是1行,你可以写:

if (x==1) doThisMethod(); else doThatMethod();
Run Code Online (Sandbox Code Playgroud)


Luk*_*der 5

我怀疑这是否有效.所述JLS§15.25定义三元表达如下:

ConditionalExpression:
    ConditionalOrExpression
    ConditionalOrExpression ? Expression : ConditionalExpression
Run Code Online (Sandbox Code Playgroud)

而a 本身ConditionalExpression并不是一个Statement.它可以用于其他各种地方,例如Assignment:

AssignmentExpression:
    ConditionalExpression
    Assignment

Assignment:
    LeftHandSide AssignmentOperator AssignmentExpression
Run Code Online (Sandbox Code Playgroud)