簡単な紹介
オプションのクラスは、コンテナオブジェクトがnullの場合もあります。値が存在する場合isPresent()メソッドがtrueを返し、GET()メソッドを呼び出し、オブジェクトを返します。
オプションは、コンテナである:それは型Tの値を保持することができ、または単にnullを保存します。オプションには、多くの有用な方法を提供していますので、我々は明示的にnullに検出することはありません。
クラスのオプションの導入、nullポインタ例外に優れたソリューション。
例
パブリック クラスJava8Tester { 公共 静的 ボイドメイン(文字列引数[]){ Java8Tester java8Tester = 新しい新しいJava8Tester(); 整数VALUE1 = NULLを、 整数値2 = 新しい新規整数(10 ); // Optional.ofNullable -渡すパラメータがnullである可能 オプション<整数> A = Optional.ofNullable(VALUE1); // Optional.of -渡されたパラメータがnullの場合、NullPointerExceptionがスローされた オプションの<整数> = B Optional.of(値2); System.out.printlnは(java8Tester.sum (A、B)); } 公共SUM整数(オプションザ<整数> A、オプションザ<整数> B){ // Optional.isPresent -決意値が存在 するSystem.out.printlnを( "第1のパラメータ値が存在する:" + a.isPresent()); システム.out.println(「第2のパラメータ値が存在する:」+ b.isPresent()); // Optional.orElse -値が存在する場合、それが返され、そうでない場合はデフォルト値の 整数= VALUE1 a.orElse(新しい新しい整数(0 )); // Optional.get -値を得る値が存在する必要がある 整数値2 = b.get(); 戻り VALUE1 +の、値2を } }
上記のスクリプトの実装では、出力は次のようになります。
第1のパラメータ値が存在する:falseに 第2のパラメータ値の存在:trueに 10
分析
1、上記の例では、唯一のオプションクラスを使用することを示しており、その前の==ヌルほど良好ではない感じ、今またはNullPointerExceptionが、はNoSuchElementExceptionなどを投げて、NullPointerExceptionがスローする前に、使用は何のように見えませんでした。次は方法のオプションクラスを見てください。
クラスメソッド
いいえ。 | メソッドと説明 |
---|---|
1 | 静的<T>オプション<T>空() オプションのリターン空のインスタンス。 |
2 | ブールのequals(オブジェクトobj) 別のオブジェクトはオプションと等しいかどうかを決定します。 |
3 | オプション<T>フィルタ(述語<?スーパー<T>述語) 値が存在し、そしてpredicateA与えられ、この値が一致する場合、それは任意そうでなければ空のオプションを記述するための値を返します。 |
4 | <U>オプション<U> flatMap(機能<?スーパーT、オプションの<U >>マッパー) 値が存在する場合、オプションを含む戻り値のマッピング方法は、そうでなければ空のオプション、ベース |
5 | T取得() あなたはこのオプション、戻り値、の値が含まれる場合はそうでない場合は例外がスローされますはNoSuchElementExceptionを |
6 | int型のhashCode() 、ハッシュコード値が存在返し値が存在しない場合は0を返します。 |
7 | 空ifPresent(消費者<?スーパーT>消費者) 値が存在する場合は、消費者を呼び出すために、その値を使用するか、または何もしません。 |
8 | ブールisPresent() メソッドの値が存在する場合にはそうでない場合はfalse、trueを返します。 |
9 | <U>オプション<U>マップ(関数<?スーパーT ,?拡張U>マッパー) 値がある場合は、その戻り値を取得するためにマッピング機能を呼び出します。戻り値がnullでない場合は、そうでない場合は空のオプションを返し、マップ・メソッドが値を返すようオプションの戻り値を含むマップを作成します。 |
10 | 静的<T>オプション<T>(T値)の オプションは、指定された非null値を返します。 |
11 | 静的<T>オプション<T> ofNullable(T値) 空でない場合は、そうでない場合は空の省略、省略可能説明指定された値を返します。 |
12 | T orElse(他のT) そうでない場合は、他の値が存在する場合は、戻り値、。 |
13 | T orElseGet(サプライヤー<?拡張T>その他) 値が存在する場合、値を返す、またはその他をトリガし、その結果、他のコールを返します。 |
14 | T orElseThrow <XがThrowableを延び>(サプライヤーexceptionSupplier <?Xに延び>)
値が存在する場合、値が含まれ、それ以外の場合は例外がサプライヤーによって継承スローされます |
15 | 文字列のtoString() オプションは、デバッグに使用される非null文字列を返します |
注意: からこれらのメソッド java.lang.Object上位 クラスが来る継承。