[Java] if(hoge != null) {...}の代わりにOptionalを使う
いまいちOptionalの使いドコロがわかっていなかったのですが、こういうことだったのかなぁと理解しました。
変数hogeがnullでないときのみ、hogeのメソッドを実行したい
従来のやりかた
if (hoge != null) {
hoge.fuga();
}
Optionalを使ったやりかた
Optional
.ofNullable(hoge)
.ifPresent(o -> o.fuga());
どっちのほうが見やすいかな? ![]()
変数hogeがnullでないときは、hogeのメソッド実行結果を返す
従来のやりかた
fugo = hoge != null ? hoge.fugo() : null;
Optionalを使ったやりかた
fugo = Optional
.ofNullable(hoge)
.map(o -> o.fugo()) // Optional<?>が返ってくるので、
.orElse(null); // orElseで値そのものか、デフォルト値(ここではnull)を返すようにする
これくらいだと、3項演算子のほうが見やすいかな? ![]()
変数hogeがnullでないときは、hogeのメソッドを呼び、メソッドの結果がnullでないときは、さらにメソッドを呼ぶ
何書いてあるかわかんないですね。コード見てください。
従来のやりかた
instant = null;
if (hoge != null) {
date = hoge.getDate();
if (date != null) {
instant = date.toInstant();
}
}
あるいは、こんなんどうでしょう?
instant = hoge != null
? (hoge.getDate() != null
? hoge.getDate().toInstant()
: null)
: null;
Optionalを使ったやりかた
instant = Optional
.ofNullable(hoge)
.map(o -> o.getDate())
.map(d -> d.toInstant())
.orElse(null);
どっちのほうが見やすいかな? ![]()