我正在尝试使用?决定我想要调用哪种方法,但我不需要分配变量。我的问题:有没有办法使用三元运算符而不分配变量?
(something i dont need) = (x == 1)? doThisMethod():doThatMethod()
而不是
if(x == 1) {
doThisMethod()
} else {
doThatMethod()
}
答案 0 :(得分:21)
这不起作用,因为它不是三元运算符的预期用途。
如果你真的希望它是1行,你可以写:
if (x==1) doThisMethod(); else doThatMethod();
答案 1 :(得分:5)
我怀疑这是否有效。 JLS §15.25定义三元表达式如下:
ConditionalExpression:
ConditionalOrExpression
ConditionalOrExpression ? Expression : ConditionalExpression
ConditionalExpression
本身不是Statement
。但是,它可以用于各种其他地方,例如, Assignment
:
AssignmentExpression:
ConditionalExpression
Assignment
Assignment:
LeftHandSide AssignmentOperator AssignmentExpression
答案 2 :(得分:1)
根据§14.8 "Expression Statements" of the Java Language Specification,唯一可以单独用作语句的表达式是:
答案 3 :(得分:-4)
如果在方法调用之后流程要中断,那么多样化就更加多样化了。这可以使用,但是如果在if之后流程没有中断,那么请注意两个方法都会被执行。
if (x==1)
doThisMethod();
doThatMethod();