[Java]Optionalとは?(value-based)


java.util.Optional
extends Object

Optional


Null値の可能性のあるコンテナオブジェクトを含めることができます.
値(non-null)isPresent()が存在する場合、trueが返され、get()を使用して値を取り出すことができます.
含まれる値のサイズに応じて異なる関数を指定します.
  • orElse():値がない場合は、デフォルト値
  • を返します.
  • ifPresent():値の場合、コードブロック
  • が実行されます.

    Optionalはvalue-basedベースのクラスです。


    したがって、identity-sensitive演算子(同一性(==)、id hash code、同期などを参照)を使用すると、予期せぬ結果が発生する可能性を回避する必要があります.

    value-based?

  • final and immutable(可変オブジェクトの参照を含むことができる)
  • equals、hashCode、toStringの実装
    -インスタンス状態でのみ使用可能
  • インスタンス間参照整合性(==)、インスタンスのidentity hashコード、インスタンスの一意ロック同期などのidentity-sensitive演算子
  • を使用しない
  • 参照不一致性(==)ではなくequals()に基づいて一致性を判断
  • アクセス可能な作成者はいませんが、ファクトリメソッド(インスタンスを返す識別子は何もしません)によってインスタンス化されます.(?)
  • Use?

  • は「結果なし」を表す必要があり、nullをエラーの可能性のあるメソッドの戻りタイプ
  • として使用します.
  • Optional変数は空ではなく、常にOptionalインスタンス
  • を指す必要があります.
    リファレンス
    https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Optional.html