我尝试使用带有三元表达式的泛型类型来执行不返回值的表达式。这是我的课:
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
这里的运算符优先级规则很不稳定。你需要括号。这很好用:
generic.t = X ? (my_a += 1) : (my_b += 1);