java.lang.Object
java.util.Optional<T>
- 型パラメータ:
T
- 価値のタイプ
public final class Optional<T> extends Object
非
null
値を含んでも含まなくてもよいコンテナ・オブジェクト。 値が存在する場合、isPresent()
はtrue
を返します。 値が存在しない場合、オブジェクトはemptyとみなされ、isPresent()
はfalse
を返します。
orElse()
(値がない場合はデフォルト値を返します)およびifPresent()
(値が存在する場合にアクションを実行)のような、含まれた値の有無に依存する追加のメソッドが提供されています。
これはvalue-basedクラスです。プログラマは、equalのインスタンスを交換可能として扱い、同期にインスタンスを使用しないようにする必要があります。そうしないと、予期しない動作が発生する可能性があります。 たとえば、将来のリリースでは、同期が失敗する可能性があります。
- APIのノート:
Optional
は、主に"検索結果はありません、"を明示的に表示する必要があり、null
を使用するとエラーが発生する可能性のあるメソッドの戻り値の型として使用することを意図しています。 型がOptional
の変数は、それ自体決してnull
であってはなりません。常にOptional
インスタンスを指す必要があります。- 導入されたバージョン:
- 1.8
-
メソッドのサマリー
修飾子と型メソッド説明static <T> Optional<T>
empty()
空のOptional
インスタンスを返します。boolean
他のオブジェクトがこのOptional
に"に等しい"かどうかを示します。値が存在し、その値が与えられた述語に一致する場合は、値を記述するOptional
を返し、それ以外の場合は空のOptional
を返します。<U> Optional<U>
値が存在する場合、指定されたOptional
-bearingマッピング関数を値に適用した結果を返します。それ以外の場合は空のOptional
を返します。get()
値がある場合は値を返し、そうでない場合はNoSuchElementException
をスローします。int
hashCode()
存在する場合は値のハッシュ・コードを返し、値が存在しない場合は0
(zero)を返します。void
値が存在する場合は、その値で指定されたアクションを実行し、そうでない場合は何もしません。void
ifPresentOrElse
(Consumer<? super T> action, Runnable emptyAction) 値が存在する場合は、指定されたアクションを値とともに実行し、そうでない場合は空のベースのアクションを実行します。boolean
isEmpty()
値が存在しない場合はtrue
、それ以外の場合false
を返します。boolean
値が存在する場合はtrue
を返し、そうでない場合はfalse
を返します。<U> Optional<U>
値が存在する場合は、与えられたマッピング関数をその値に適用した結果を(ofNullable(T)
のように)記述するOptional
を返します。それ以外の場合は、空のOptional
を返します。static <T> Optional<T>
of
(T value) 指定された非null
値を記述するOptional
を返します。static <T> Optional<T>
ofNullable
(T value) 非null
ならば、指定された値を記述するOptional
を返し、それ以外の場合は空のOptional
を返します。値が存在する場合は値を記述するOptional
を返し、そうでない場合は供給関数によって生成されたOptional
を返します。値が存在する場合は値を返し、そうでない場合はother
を返します。値が存在する場合は値を返し、そうでない場合は供給関数によって生成された結果を返します。値がある場合は値を返し、そうでない場合はNoSuchElementException
をスローします。orElseThrow
(Supplier<? extends X> exceptionSupplier) 値が存在する場合は値を返し、そうでない場合は例外を提供する関数によって生成された例外をスローします。stream()
値が存在する場合は、その値のみを含む順次Stream
を返し、それ以外の場合は空のStream
を返します。toString()
デバッグに適したこのOptional
の空でない文字列表現を返します。
-
メソッドの詳細
-
empty
public static <T> Optional<T> empty()空のOptional
インスタンスを返します。 このOptional
には値はありません。- APIのノート:
- これは一時的なものですが、
Optional.empty()
によって返されたインスタンスと==
または!=
を比較して、オブジェクトが空であるかどうかをテストしないでください。 シングルトンである保証はありません。 かわりに、isEmpty()
またはisPresent()
を使用してください。 - 型パラメータ:
T
- 存在しない値の型- 戻り値:
- 空の
Optional
。
-
of
public static <T> Optional<T> of(T value) 指定された非null
値を記述するOptional
を返します。- 型パラメータ:
T
- 値の型- パラメータ:
value
- 説明する値。非null
である必要があります。- 戻り値:
- 存在する値での
Optional
- throws:
NullPointerException
- valueがnull
の場合
-
ofNullable
public static <T> Optional<T> ofNullable(T value) 非null
ならば、指定された値を記述するOptional
を返し、それ以外の場合は空のOptional
を返します。- 型パラメータ:
T
- 値の型- パラメータ:
value
- 説明するnull
の値- 戻り値:
- 指定された値が非
null
の場合は現在の値を持つOptional
、それ以外の場合は空のOptional
-
get
public T get()値がある場合は値を返し、そうでない場合はNoSuchElementException
をスローします。- APIのノート:
- このメソッドの好ましい代替メソッドは
orElseThrow()
です。 - 戻り値:
- この
Optional
によって記述される非null
値 - throws:
NoSuchElementException
- 値が存在しない場合
-
isPresent
public boolean isPresent()値が存在する場合はtrue
を返し、そうでない場合はfalse
を返します。- 戻り値:
- 値が存在する場合は
true
、そうでない場合はfalse
-
isEmpty
public boolean isEmpty()値が存在しない場合はtrue
、それ以外の場合false
を返します。- 戻り値:
- 値が存在しない場合は
true
、それ以外の場合はfalse
- 導入されたバージョン:
- 11
-
ifPresent
値が存在する場合は、その値で指定されたアクションを実行し、そうでない場合は何もしません。- パラメータ:
action
- 値が存在する場合、実行されるアクション- throws:
NullPointerException
- 値が存在し、与えられたアクションがnull
の場合
-
ifPresentOrElse
値が存在する場合は、指定されたアクションを値とともに実行し、そうでない場合は空のベースのアクションを実行します。- パラメータ:
action
- 値が存在する場合、実行されるアクションemptyAction
- 値が存在しない場合、実行される空のベースのアクション- throws:
NullPointerException
- 値が存在し、指定されたアクションがnull
の場合、または値が存在しない場合、指定された空のアクションはnull
です。- 導入されたバージョン:
- 9
-
filter
値が存在し、その値が与えられた述語に一致する場合は、値を記述するOptional
を返し、それ以外の場合は空のOptional
を返します。- パラメータ:
predicate
- 存在する場合、値に適用する述語- 戻り値:
- この
Optional
の値を記述するOptional
(値が存在し、その値が与えられた述語と一致する場合)、そうでない場合は空のOptional
- throws:
NullPointerException
- 述語がnull
の場合
-
map
値が存在する場合は、与えられたマッピング関数をその値に適用した結果を(ofNullable(T)
のように)記述するOptional
を返します。それ以外の場合は、空のOptional
を返します。マッピング関数が
null
の結果を返した場合、このメソッドは空のOptional
を返します。- APIのノート:
- このメソッドは、戻りステータスを明示的にチェックする必要なく、
Optional
値の後処理をサポートします。 たとえば、次のコードはURIのストリームを走査し、まだ処理されていないものを選択し、そのURIからのパスを作成し、Optional<Path>
:
ここでは、Optional<Path> p = uris.stream().filter(uri -> !isProcessedYet(uri)) .findFirst() .map(Paths::get);
findFirst
がOptional<URI>
を返した後、map
が存在する場合は、希望するURIのOptional<Path>
を返します。 - 型パラメータ:
U
- マッピング関数から返される値の型- パラメータ:
mapper
- 存在する場合、値に適用するマッピング関数- 戻り値:
- 値が存在する場合はマッピング関数をこの
Optional
の値に適用した結果を記述するOptional
、それ以外の場合は空のOptional
- throws:
NullPointerException
- マッピング関数がnull
の場合
-
flatMap
値が存在する場合、指定されたOptional
-bearingマッピング関数を値に適用した結果を返します。それ以外の場合は空のOptional
を返します。このメソッドは
map(Function)
と似ていますが、マッピング関数はすでに結果がOptional
のものであり、呼び出された場合、flatMap
は追加のOptional
内にそれをラップしません。- 型パラメータ:
U
- マッピング関数によって返されたOptional
の値の型- パラメータ:
mapper
- 存在する場合、値に適用するマッピング関数- 戻り値:
- 値が存在する場合は
Optional
生成マッピング関数をこのOptional
の値に適用した結果、それ以外の場合は空のOptional
- throws:
NullPointerException
- マッピング関数がnull
の場合、またはnull
の結果を返す場合
-
or
値が存在する場合は値を記述するOptional
を返し、そうでない場合は供給関数によって生成されたOptional
を返します。- パラメータ:
supplier
- 戻されるOptional
を生成する供給関数- 戻り値:
- 値が存在する場合はこの
Optional
の値を記述するOptional
を返し、そうでない場合は、供給関数によって生成されたOptional
を返します。 - throws:
NullPointerException
- 供給関数がnull
またはnull
結果を生成する場合- 導入されたバージョン:
- 9
-
stream
値が存在する場合は、その値のみを含む順次Stream
を返し、それ以外の場合は空のStream
を返します。- APIのノート:
- このメソッドは、任意の要素の
Stream
を現在の値要素のStream
に変換するために使用できます:Stream<Optional<T>> os = .. Stream<T> s = os.flatMap(Optional::stream)
- 戻り値:
- オプションの値は
Stream
です。 - 導入されたバージョン:
- 9
-
orElse
値が存在する場合は値を返し、そうでない場合はother
を返します。- パラメータ:
other
- 値が存在しない場合、返される値。null
も可。- 戻り値:
- 値(存在する場合)、それ以外の場合は
other
-
orElseGet
値が存在する場合は値を返し、そうでない場合は供給関数によって生成された結果を返します。- パラメータ:
supplier
- 戻される値を生成する供給関数- 戻り値:
- 存在する場合は値、そうでない場合は供給関数によって生成された結果
- throws:
NullPointerException
- 値が存在せず、供給関数がnull
の場合
-
orElseThrow
public T orElseThrow()値がある場合は値を返し、そうでない場合はNoSuchElementException
をスローします。- 戻り値:
- この
Optional
によって記述される非null
値 - throws:
NoSuchElementException
- 値が存在しない場合- 導入されたバージョン:
- 10
-
orElseThrow
値が存在する場合は値を返し、そうでない場合は例外を提供する関数によって生成された例外をスローします。- APIのノート:
- 引数リストが空である例外コンストラクタへのメソッド参照をサプライヤとして使用できます。 たとえば、
IllegalStateException::new
などです。 - 型パラメータ:
X
- スローされる例外の型- パラメータ:
exceptionSupplier
- スローされる例外を生成する供給関数- 戻り値:
- 存在する場合は値
- throws:
X
- 値が存在しない場合NullPointerException
- 値が存在せず、例外を提供する関数がnull
の場合
-
equals
public boolean equals(Object obj) 他のオブジェクトがこのOptional
に"に等しい"かどうかを示します。 他方のオブジェクトは次の場合に同等と見なされます。- それも
Optional
である、および - 両方のインスタンスに存在する値がない、または
- 存在する値が
equals()
によってお互いに等しい。
- それも
-
hashCode
public int hashCode()存在する場合は値のハッシュ・コードを返し、値が存在しない場合は0
(zero)を返します。 -
toString
public String toString()デバッグに適したこのOptional
の空でない文字列表現を返します。 正確な表示フォーマットは未指定であり、実装とバージョンの間で異なることがあります。
-