我正在尝试使用?决定我想调用哪个方法,但我不需要分配变量。我的问题:有没有办法在不分配变量的情况下使用三元运算符?
(something i dont need) = (x == 1)? doThisMethod():doThatMethod()
代替
if(x == 1) {
doThisMethod()
} else {
doThatMethod()
}
这不起作用,因为它不是三元运算符的预期用途。
如果你真的希望它是 1 行,你可以写:
if (x==1) doThisMethod(); else doThatMethod();
我怀疑这是否有效。JLS §15.25定义三元表达式如下:
ConditionalExpression:
ConditionalOrExpression
ConditionalOrExpression ? Expression : ConditionalExpression
a本身ConditionalExpression
并不是 a Statement
。但是,它可以在其他各种地方使用,例如Assignment
:
AssignmentExpression:
ConditionalExpression
Assignment
Assignment:
LeftHandSide AssignmentOperator AssignmentExpression
根据Java 语言规范的第 14.8 节“表达式语句”,唯一可以单独用作语句的表达式是:
更加多样化,如果在方法调用之后流程中断。可以使用this,但请注意,如果流程在 if 之后没有中断,那么这两个方法都将被执行。
if (x==1)
doThisMethod();
doThatMethod();