1. ホーム
  2. java

[解決済み] Java "?" 演算子によるnullチェック - その正体は?(三項演算子ではありません!)

2022-12-16 21:02:46

質問

スラッシュドットの記事からリンクされた記事を読んでいたら、こんな小ネタに出くわしました。

最新版の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が複素数式の場合に特に有用です。