Java の Opional は関数の戻り値として利用することに焦点が当てられているため、Serializable ではない。
よって以下のようにフィールドとして定義したり、
private Optional<String> name;
コレクションに入れたり、
List<Optional<String>> list;
メソッドの引数で受けたり、
public void foo(Optional<String> param) { ・・・ }
といった使い方は設計意図に反する。
Optional はあくまでも、関数の戻り値が空かもしれない という意図を表現するものである。