オプションを使用してプロのようにnullを処理します


何度も我々のコードは完璧であり、与えられたシナリオの魅力のように動作し、我々は罰金金曜日に生産の展開を続行すると思います.しかし、コードが予期しないデータのために、または若干の失敗のために生産を打つとき、コードがnullpointerexcpetionをスローするとき、感じはこの週末も気が狂って来ます.

しかし、神に感謝して、我々は任意のクラスであるJava 8から存在に入ったNPE(NullPointerException)と戦う救助隊を持っています.

この記事では、我々はどのように我々は日ごとの仕事でオプションを使用することができますを見つけることができます.
オプションのオブジェクトを作成するには、2つのメソッドがあります.
方法の使用法
OFNLLable を使用する

  • ここに例があります
    Optional<String> optional = Optional.of("Chaitanya");
    Optional<String> opNullable = Optional.ofNullable("Chaitanya");
    
    呼び出し関数のためにNULLが来る可能性があると思うなら、NULLを使用することができます.
    値がNULLの場合、メソッドはNPEをスローします.したがって、null値を取得しないことが確実ならば、メソッドを使用できます.
    変数の初期化のような単純な操作のために、単純な値を持ちます、そして、あなたは彼らを渡したいです、そして、あなたはメソッドを使うことができます、あなたが結果のためにいくつかの外部関数を呼んでいるならば、あなたはNULLを使用することができます.
    オプションは値を保持するコンテナのようなものです.コンテナから物事を取得するには、オプションの値を取得するには、同じ方法を開く必要がある、我々はメソッドを取得します.
    Optional<String> optional = Optional.of("Chaitanya");
    System.out.println(optional.get());
    
    あなたは大きな容器を得たと思う、あなたはそれを開いて何も見つけ、その後失望した権利を感じる?これらの種類の悪い感情から救うために、我々はispresentメソッドを持っています.
    Optional<String> nameOptional = getFirstName();
    if(nameOptional.isPresent()) {
      System.out.println(nameOptional.get());
    } else {
      System.out.println("No Name :( ");
    }
    
    あなたが機能的なスタイルで扱いたいならば
    nameOptional.ifPresent(value -> {
      System.out.println(value);
    });
    
    またはメソッド参照の使用
    nameOptional.ifPresent(System.out::println);
    
    場合によっては、例外が発生したときには何もしたくないので、オプションの方法ではcatchブロック内でNULLを返すことはありません.
    try {
      return Optional.ofNullable(getEmpName());
    } catch (Exception ex) {
     return Optional.empty();
    }
    
    時々、特定の操作の結果を操作する必要があるかもしれません
    Optional<String> nameInUpperCaseOptional =                            
                           Optional.ofNullable(getEmpName())
                              .map(String::toUpperCase)
                              .get();
    
    ここでマップは変換された値を持つもう一つのオプションオブジェクトを返します.オプションのオブジェクトの代わりに直接値を取得したい場合は、flatMapメソッドを使用できます.
    String nameInUpperCase = Optional.ofNullable(getEmpName())
                              .flatMap(String::toUpperCase);
    
    値が存在しないときにデフォルト値を返す場合は
    String EMPTY = "";
    String name = Optional.ofNullable(getEmpName())
                      .orElse(EMPTY);
    
    値が存在しない場合、何らかのアクションを実行したい場合は、
    String name = Optional.ofNullable(getEmpName())
                      .orElseGet(_ -> System.out.println("There is no Value :( "));
    
    値が存在しない場合に例外をスローする場合は
    String name = Optional.ofNullable(getEmpName())
                      .orElseThrow(Exception::new);
    
    Java 11では、ifpresentelse、またはstreamのようなオプションクラスのいくつかの拡張機能があります.ここでは詳細についてはドキュメントへのリンクです.Java 11#Optional
    あなたがオプションを適切に使うならば、あなたはNPEをほとんど避けることができて、ストレスの多い週末も避けることができます.

    支出時間のおかげで.私はあなたのフィードバックに感謝します.