Java の Optional は Serializable ではない

Java の Opional は関数の戻り値として利用することに焦点が当てられているため、Serializable ではない。
よって以下のようにフィールドとして定義したり、

  private Optional<String> name;


コレクションに入れたり、

  List<Optional<String>> list;


メソッドの引数で受けたり、

  public void foo(Optional<String> param) { ・・・ }


といった使い方は設計意図に反する。

Optional はあくまでも、関数の戻り値が空かもしれない という意図を表現するものである。