Java 8 - オプションのクラス
Optional は、null 以外のオブジェクトを格納するために使用されるコンテナー オブジェクトです。オプションのオブジェクトは、値が存在しない null を表すために使用されます。このクラスには、null 値をチェックする代わりに、値を「使用可能」または「使用不可」として処理するコードを容易にするさまざまなユーティリティ メソッドがあります。これは Java 8 で導入され、Guava の Optional に似ています。
クラス宣言
以下は、java.util.Optional
public final class Optional<T> extends Object
クラス メソッド
| Sr.No. | 方法と説明 |
|---|---|
| 1 |
static 空の Optional インスタンスを返します。 |
| 2 | boolean equals(Object obj) 他のオブジェクトがこの Optional と「等しい」かどうかを示します。 |
| 3 |
オプションの 値が存在し、その値が特定の述語と一致する場合は、値を説明する Optional を返します。それ以外の場合は、空の Optional を返します。 |
| 4 | Optional flatMap(Function super T,Optional> マッパー) 値が存在する場合、提供された Optional-bearing マッピング関数をそれに適用し、その結果を返します。それ以外の場合は、空の Optional を返します。 |
| 5 | get() この Optional に値が存在する場合は値を返し、それ以外の場合は NoSuchElementException をスローします。 |
| 6 | int hashCode() 存在する場合は現在の値のハッシュ コード値を返し、値が存在しない場合は 0 (ゼロ) を返します。 |
| 7 | void ifPresent(Consumer super T> consumer) 値が存在する場合、その値で指定されたコンシューマーを呼び出します。それ以外の場合は何もしません。 |
| 8 | ブール値 isPresent() 値が存在する場合は true、そうでない場合は false を返します。 |
| 9 | オプションの map(Function super T,? extends U> mapper) 値が存在する場合は、指定されたマッピング関数をそれに適用し、結果が null でない場合は、結果を説明する Optional を返します。 |
| 10 |
static 指定された現在の null 以外の値を持つ Optional を返します。 |
| 11 |
static 指定された値を記述する Optional を返します。null でない場合は、空の Optional を返します。 |
| 12 | T orElse(T その他) 存在する場合は値を返し、そうでない場合はその他を返します。 |
| 13 | T orElseGet(Supplier extends T> other) 存在する場合は値を返し、そうでない場合は other を呼び出し、その呼び出しの結果を返します。 |
| 14 |
含まれている値が存在する場合はそれを返します。それ以外の場合は、提供されたサプライヤーによって作成される例外をスローします。 |
| 15 | 文字列 toString() デバッグに適した、この Optional の空でない文字列表現を返します。 |
このクラスは、次のクラスからメソッドを継承します −
- java.lang.Object
オプションの例
たとえば、C:\> JAVA.
などで任意のエディターを使用して、次の Java プログラムを作成します。Java8Tester.java
ライブデモ
import java.util.Optional;
public class Java8Tester {
public static void main(String args[]) {
Java8Tester java8Tester = new Java8Tester();
Integer value1 = null;
Integer value2 = new Integer(10);
//Optional.ofNullable - allows passed parameter to be null.
Optional<Integer> a = Optional.ofNullable(value1);
//Optional.of - throws NullPointerException if passed parameter is null
Optional<Integer> b = Optional.of(value2);
System.out.println(java8Tester.sum(a,b));
}
public Integer sum(Optional<Integer> a, Optional<Integer> b) {
//Optional.isPresent - checks the value is present or not
System.out.println("First parameter is present: " + a.isPresent());
System.out.println("Second parameter is present: " + b.isPresent());
//Optional.orElse - returns the value if present otherwise returns
//the default value passed.
Integer value1 = a.orElse(new Integer(0));
//Optional.get - gets the value, value should be present
Integer value2 = b.get();
return value1 + value2;
}
}
結果を確認する
javac を使用してクラスをコンパイルします 次のようにコンパイラ-
C:\JAVA>javac Java8Tester.java
次のように Java8Tester を実行します −
C:\JAVA>java Java8Tester
次の出力が生成されるはずです −
First parameter is present: false Second parameter is present: true 10
Java