2016-05-25 7 views
-3

fooは問題ありませんが、なぜbarメソッドがコンパイルに失敗しますか?Javaでの3進演算子の優先順位と代入

enter image description here

+3

Javaのルールが定義されているからです。 JavaはC#ではないので、C#で動作するものはすべてJavaで同じように動作することを期待する必要はありません。 – Jesper

+0

htt38://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html –

+0

質問している内容が不明です。 JavaはC#ではなく、*はその逆です。コンパイルエラーが発生した行を指定していません。 – EJP

答えて

3

これは、Javaをprecedence rulesです。代入は?または:より低い前例があるため、最後に評価されます。コンパイラには意味がありません

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

:その場合barは、このように解析されます意味

上記の括弧を挿入すると、2つが事実上同じであるため、コンパイラが同じ箇所で同じエラーメッセージで失敗することがわかります。

関連する問題