ホームページ  >  記事  >  Java  >  Java では、`temp()` メソッドから Null を返してもコンパイラ エラーが発生しないのに、If ステートメントの `same()` ではコンパイラ エラーが発生するのはなぜですか?

Java では、`temp()` メソッドから Null を返してもコンパイラ エラーが発生しないのに、If ステートメントの `same()` ではコンパイラ エラーが発生するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-04 22:00:03771ブラウズ

Why Does Returning Null from a `temp()` Method Not Cause a Compiler Error in Java, While `same()` with an If Statement Does?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。