タグ

javaとoptionalに関するItisangoのブックマーク (2)

  • Optional (Java Platform SE 8)

    null以外の値が含まれている場合も含まれていない場合もあるコンテナ・オブジェクトです。値が存在する場合、isPresent()はtrueを返し、get()は値を返します。 含まれる値の有無に応じて追加メソッドが提供されます。たとえば、orElse() (値が存在しない場合にデフォルト値を返す)、ifPresent() (値が存在する場合にコードのブロックを実行する)など。 これは値ベースのクラスで、Optionalのインスタンスに対して、ID依存操作(参照等価性(==)、IDハッシュ・コード、同期など)を使用すると、予期できない結果になる可能性があり、避けてください。

    Itisango
    Itisango 2021/11/14
    “値が存在する場合は、指定されたマッピング関数をその値に適用し、結果がnullでなければ結果を記述するOptionalを返します。それ以外の場合は空のOptionalを返します。”
  • re:僕にとってMaybe / Nullable / Optional が、どうしてもしっくりこないわけ。 - ぐるぐる~

    元ネタ: 僕にとってMaybe / Nullable / Optional が、どうしてもしっくりこないわけ。 - 亀岡的プログラマ日記 OOPの文脈で見ると、元の記事が言っていることもわからなくはないのですが、対象が広すぎていろいろと不正確になってしまっているので、ちょっとまとめてみます。 元の記事が対象にしているのは、Maybe / Optional / Nullableの3つです。 対応する型を持つ言語を見てみると、下記のようになります。 Maybe(Haskell) Optional(Swift/Java) Nullable(C#) これらは、「値がないこと」を表すもの、という見方では同じですが、それぞれ異なる価値観の元に作られています。 Maybe/OptionalとNullable これらはすべて型パラメータを取ります*1。 しかし、この中でNullableだけは型パラメータに

    re:僕にとってMaybe / Nullable / Optional が、どうしてもしっくりこないわけ。 - ぐるぐる~
  • 1