Errors 初級

ネストされたnullチェックをOptionalパイプラインに置き換える。

✕ Java 8
String city = null;
if (user != null) {
    Address addr = user.getAddress();
    if (addr != null) {
        city = addr.getCity();
    }
}
if (city == null) city = "Unknown";
✓ Java 9+
String city = Optional.ofNullable(user)
    .map(User::address)
    .map(Address::city)
    .orElse("Unknown");
このコードに問題がありますか? お知らせください。
🔗

チェーン可能

各.map()ステップがnullを透過的に処理します。

📖

線形な流れ

ネストされたifブロックではなく左から右に読めます。

🛡️

NPE安全

各ステップでnullが処理されるのでクラッシュしません。

旧来のアプローチ
ネストされたnullチェック
モダンなアプローチ
Optionalパイプライン
JDKバージョン
9
難易度
初級
Optionalのチェーン
利用可能

JDK 8以降(9以降で改善)

Optional.map()はnullになりうる値をチェーンし、最初のnullで短絡します。orElse()でデフォルト値を提供します。ピラミッド状のnullチェックをなくします。

共有 𝕏 🦋 in