Optional<>前夜

例えば、こんなメソッドを作ったとします。

Factory.Java

public class Factory {
    /**
     * MyObjの新規インスタンスを作成して返す。<br>
     * 作成失敗したときはnullを返す。
     *
     * @return
     */
    public MyObj createMyObj() {
      // ...
    }
}

このメソッドを使う側は、こんな感じのコードになるでしょう。


Factory factory;
// ...
MyObj myObj = factory.createMyObj();

if (myObj != null) {
    // 成功時の処理
}

Optional<>後夜

Optional<>を返すようにしてみました。

Factory.Java

public class Factory {
    /**
     * MyObjの新規インスタンスを作成して返す。<br>
     * 作成失敗したときはnullを返す。
     *
     * @return
     */
    public Optional<MyObj> createMyObj() {
      // ...
    }
}

使う側はこんな感じになります。


Optional<MyObj> myObj = factory.createMyObj();

myObj.ifPresent(o -> {
    // 成功時の処理
});