Optional
クラスは、コンテナオブジェクトがnullの場合もあります。値が存在する場合はisPresent()
メソッドの戻りをtrue
、呼び出すget()
メソッドはオブジェクトを返します。
Optional
コンテナ:それは型Tの値を保持することができ、あるいは単に保存することnull
。Optional
オファー多くの有用な方法は、私たちは、明示的にnullを検出できません。
Optional
クラスの導入ヌルポインタ例外に優れたソリューション。
①テスト
public class OptionalTest {
public static void main(String[] args) {
OptionalTest test = new OptionalTest();
Integer val1 = null;
Integer val2 = new Integer(10);
//Optional.ofNullable - 允许传递为 null 参数
Optional<Integer> op1 = Optional.ofNullable(val1);
//Optional.of - 如果传递的参数是 null,抛出异常 NullPointerException
Optional<Integer> op2 = Optional.of(val2);
System.out.println(test.sum(op1,op2));
}
public Integer sum(Optional<Integer> a, Optional<Integer> b) {
//Optional.isPresent():判断值是否为null
System.out.println("参数1的值是否为null:" + a.isPresent());
System.out.println("参数2的值是否为null:" + b.isPresent());
//Optional.orElse - 如果值存在,返回它,否则返回默认值
Integer val1 = a.orElse(0);
//Optional.get - 获取值,值需要存在
Integer val2 = b.get();
return val1+val2;
}
}
②クラスメソッド
いいえ。 | メソッドと説明 |
---|---|
1 | static <T> Optional<T> empty() 空のインスタンスを返すオプション。 |
2 | boolean equals(Object obj) 別のオブジェクトが等しいオプションであるかどうかを判断します。 |
3 | Optional<T> filter(Predicate<? super <T> predicate) 値が存在し、この値が所定の一致する場合predicate 、そうでなければ空の任意のオプションを記述するために値を返します。 |
4 | <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper) ベースオプションを含む値が存在する場合、戻り値のマッピング方法そうでなければ空のオプション |
5 | T get() あなたはこのオプション、戻り値、の値が含まれる場合はそうでない場合は例外がスローされますはNoSuchElementExceptionを |
6 | int hashCode() 値が存在しない場合は、ハッシュコード値が存在返します0。 |
7 | void ifPresent(Consumer<? super T> consumer) 値が存在する場合は、消費者を呼び出すために、その値を使用するか、または何もしません。 |
8 | boolean isPresent() メソッドの値が存在する場合はそれ以外の場合はfalse、trueを返します。 |
9 | <U>Optional<U> map(Function<? super T,? extends U> mapper) 値がある場合は、その戻り値を取得するためにマッピング機能を呼び出します。戻り値がない場合にはnull 、その後の戻り値含むマップ作成方法の戻り値を、そうでない場合は空の戻り。Optional map Optional |
10 | static <T> Optional<T> of(T value) オプションのリターンはnull以外の値が指定されています。 |
11 | static <T> Optional<T> ofNullable(T value) 空でない場合は、リターン省略可能ではそうでない場合はオプションを空に、指定された値を説明しました。 |
12 | T orElse(T other) そうでない場合は、他の値が存在する場合は、戻り値、。 |
13 | T orElseGet(Supplier<? extends T> other) 値は現在、戻り値、または他のトリガーであり、その結果、他のコールを返す場合。 |
14 | <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) 値が存在する場合、値が含まれ、それ以外の場合は例外がサプライヤーによって継承スローされます |
15 | String toString() オプションのリターンデバッグに使用される非ヌル文字列、 |