Java中三元运算符的优先级和赋值

Ternary operator's precedence and assignment in Java

为什么下面的 bar 方法编译失败,而 foo 没问题?

这是因为 Java 的 precedence rules。赋值的先例低于 ?:,因此最后计算。

这意味着案例 bar 会像这样解析:

return (s != null ? s : s) = "bar";

这对编译器没有意义。

如果您插入我在上面显示的括号,您会看到编译器失败并在同一位置显示相同的错误消息,因为两者实际上是相同的。