[解決済み] Java "?" 演算子によるnullチェック - その正体は?(三項演算子ではありません!)
質問
スラッシュドットの記事からリンクされた記事を読んでいたら、こんな小ネタに出くわしました。
最新版のJavaを例にとると、これは ヌルポインタのチェックを容易にするために 簡略化した構文を提供することで、NULLポインタのチェックを容易にしようとしています。 を提供することで、ヌルポインターチェックを容易にしようとしています。ただ 各メソッドにクエスチョンマークを追加するだけで を追加するだけで、自動的に のようなif-then文のネズミの巣に代わって、NULLポインタのテストが自動的に行われます。 のようなif-then文のネズミの巣を置き換えます。 のようになります。
public String getPostcode(Person person) { String ans= null; if (person != null) { Name nm= person.getName(); if (nm!= null) { ans= nm.getPostcode(); } } return ans }
これを使って
public String getFirstName(Person person) { return person?.getName()?.getGivenName(); }
私はインターネットを捜し回りましたが(少なくとも15分間は "java question mark" のバリエーションをググっていました)、何も得られませんでした。そこで質問なのですが、これに関する公式のドキュメントはあるのでしょうか?C#にも似たような演算子("?"演算子)があることはわかりましたが、自分が使っている言語のドキュメントを入手したいのですが、どうすればいいのでしょうか?あるいは、これは私がこれまで見たことのない三項演算子の使用法なのでしょうか。
ありがとうございます!
編集部:記事へのリンクです。 http://infoworld.com/d/developer-world/12-programming-mistakes-avoid-292
どのように解決するのですか?
オリジナルのアイデアはgroovyからきています。 Java 7ではProject Coinの一部として提案されました。 https://wiki.openjdk.java.net/display/Coin/2009+Proposals+TOC (Elvis and Other Null-Safe Operators) の一部として Java 7 で提案されましたが、まだ受け入れられていません。
関連するElvis演算子 ?: は、以下のようにするために提案されました。
x ?: y
の略記として提案されました。
x != null ? x : y
の略記で,xが複素数式の場合に特に有用です。
関連
-
javaの非静的メソッドを静的に参照することができない
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] カラムの変更:NULLをNOT NULLに変更する
-
[解決済み] :: (ダブルコロン) 演算子 in Java 8
-
[解決済み] Bash における三項演算子 (?:)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Eclipseは、ポップアップA Java Exception has occurred.を実行し、エラーException in threadの解決策を報告します。
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
Collections.sortがdoubleでソートできない問題を完璧に解決する。
-
javaの非静的メソッドを静的に参照することができない
-
Git Pull Failed マージされていないファイルがあるため、Pull できません。
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
java マイクロソフト払い戻し予期せぬサーバーからのファイルの終了
-
Server Tomcat v9.0 Server at localhost の起動に失敗しました。
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
[解決済み] JavaでNullPointerExceptionを回避する方法