[解決済み] 三項演算子でint型としてnullを返すことはできるがif文では不可
2022-04-14 19:10:05
質問
次のスニペットの簡単なJavaコードを見てみましょう。
public class Main {
private int temp() {
return true ? null : 0;
// No compiler error - the compiler allows a return value of null
// in a method signature that returns an int.
}
private int same() {
if (true) {
return null;
// The same is not possible with if,
// and causes a compile-time error - incompatible types.
} else {
return 0;
}
}
public static void main(String[] args) {
Main m = new Main();
System.out.println(m.temp());
System.out.println(m.same());
}
}
この最も単純なJavaのコードでは
temp()
メソッドは、関数の戻り値の型が
int
という値を返そうとしています。
null
(ステートメントを通して
return true ? null : 0;
). コンパイルすると、明らかに実行時例外が発生します
NullPointerException
.
しかし、三項演算子を
if
ステートメントを使用します(たとえば
same()
メソッド)を使用すると、どの
する
は、コンパイル時にエラーを発生させます なぜ?
解決方法は?
コンパイラは
null
への NULL 参照として扱われます。
Integer
で説明したように)、条件演算子のオートボックス/アンボックスのルールを適用します。
Java言語仕様、15.25
で、楽しく移動します。これによって
NullPointerException
を実行時に確認することができます。
関連
-
[解決済み] 非voidメソッドにreturnステートメントがない場合のコンパイル
-
myeclipseでコンパイルするとAntエラーが発生する javaの例外が発生しました。
-
eclipse で「アクセス制限: タイプ 'HttpServer' は API ではありません」というプロンプトが表示される。
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
java.lang.NoClassDefFoundError: org.apache.jasper.el.ELContextImpl クラスを初期化できませんでした。
-
SocketTimeoutExceptionの解決方法です。読み込みがタイムアウトした
-
Exception: java.util.NoSuchElementException: 行が見つかりません
-
IDEA パッケージステートメントの欠落
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。
-
[解決済み】オプショナルの使用方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スタイルが読み込まれず、ブラウザコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
eclipse アクセス制限です。タイプ 'xxx' は API ではありません(必須ライブラリ '' の制限)。
-
javaで非静的な解を静的な参照にすることができない
-
プロローグでのコンテンツは禁止されています
-
java Mail send email smtp is not authenticated by TLS encryption solution.
-
プロジェクトの依存関係を解決できなかった 解決
-
Eclipseプロンプトを実行する java仮想マシンを使用しない
-
javaでよく使われる英単語
-
javax.net.ssl.SSLException: 読み取りエラー: ssl=0xdeae5100: システムコール中の I/O エラー、接続 res