在Java三元表达式中使用+= [已关闭]

问题描述 投票:0回答:1

我尝试使用带有三元表达式的泛型类型来执行不返回值的表达式。这是我的课:

  static class Generic<T> {
    T t;
  }

  public static Generic generic = new Generic();

我正在执行一个简单的命令。 Java 编译器不会为

my_a += 1
产生任何错误,但它不允许
my_b += 1

generic.t = X ? my_a += 1 : my_b += 1;

我的问题是:为什么它不允许第二个表达式?

这主要是一段实验性代码。我只是想了解三元在 Java 中的工作方式以及为什么我不能在

+=
中使用
my_b += 1
.

代码:

generic.t = X ? my_a += 1 : my_b += 1;

例外:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
        Syntax error on token "+=", + expected
java ternary
1个回答
0
投票

这里的运算符优先级规则很不稳定。你需要括号。这很好用:

generic.t = X ? (my_a += 1) : (my_b += 1);
© www.soinside.com 2019 - 2024. All rights reserved.