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

时间:2012-09-28 16:35:28

标签: java ternary

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

(something i dont need) = (x == 1)? doThisMethod():doThatMethod()

而不是

if(x == 1) {
    doThisMethod()
} else {
    doThatMethod()
}

4 个答案:

答案 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();