ホームページ >Java >&#&チュートリアル >Java では、`temp()` メソッドから Null を返してもコンパイラ エラーが発生しないのに、If ステートメントの `same()` ではコンパイラ エラーが発生するのはなぜですか?
null を int として返す
Java では、temp() メソッドは int に対して null を返してもコンパイラ エラーを引き起こしません。 Same() は、if ステートメントとして表される場合に実行されます。この矛盾は、コンパイラによる null 戻り値の解釈が原因で発生します。
三項演算子
三項演算子の場合、コンパイラは null を整数への null 参照として扱います。自動ボックス化/ボックス化解除ルール (Java 言語仕様 15.25) に従います。これにより、int が Integer にボックス化されて逆変換され、null 戻り値が許可されます。ただし、これにより実行時に NullPointerException が生成されます。
if Statement
if ステートメントを使用する場合、コンパイラは null と int の間で互換性のない型を強制します。オートボックス化/アンボックス化変換を許可する三項演算子とは異なり、int の戻り値を期待し、null の代入は許可されません。
以上がJava では、`temp()` メソッドから Null を返してもコンパイラ エラーが発生しないのに、If ステートメントの `same()` ではコンパイラ エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。