17

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

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

代替

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

4 回答 4

25

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

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

if (x==1) doThisMethod(); else doThatMethod();
于 2012-09-28T16:40:10.337 回答
6

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

ConditionalExpression:
    ConditionalOrExpression
    ConditionalOrExpression ? Expression : ConditionalExpression

a本身ConditionalExpression并不是 a Statement。但是,它可以在其他各种地方使用,例如Assignment

AssignmentExpression:
    ConditionalExpression
    Assignment

Assignment:
    LeftHandSide AssignmentOperator AssignmentExpression
于 2012-09-28T16:43:41.987 回答
1

根据Java 语言规范的第 14.8 节“表达式语句”,唯一可以单独用作语句的表达式是:

  • 作业
  • 前增量和后增量以及前减量和后减量
  • 方法调用
  • 类实例创建表达式(构造函数调用)
于 2012-09-28T16:46:05.473 回答
-5

更加多样化,如果在方法调用之后流程中断。可以使用this,但请注意,如果流程在 if 之后没有中断,那么这两个方法都将被执行。

if (x==1) 
doThisMethod();
doThatMethod();
于 2016-01-08T06:10:37.543 回答