1
値を割り当てるときの奇妙なJavaの3値の動作。これが起こるためにJavaは舞台裏で何をしていますか?
数日前、私は、Javaが次のことをどのように、またはなぜ可能にするのかについてのドキュメントを見つけることができなかった興味深いシナリオに遭遇しました。(このスニペットは、バグを単純化したものです。) @Test public void test() { boolean bool = false; Integer intVal = Integer.valueOf(5); Long longVal = null; Long result = bool ? intVal : longVal; System.out.println(" > " + result); } 上記のスニペットで: bool = trueの場合、値は「5」になります。 しかし、bool = falseの場合、3項演算を評価しようとすると、nullポインタ例外が発生します。印刷ステートメントではありません。 これを修正するには、「結果」を次のように変更します Long result = bool ? Long.valueOf(intVal) : longVal; これを行うと、私が必要とする期待される動作が得られます: bool …