Streams 中級

ネストされたチェックなしでOptionalのフォールバックを連鎖する。

✕ Java 8
Optional<Config> cfg = primary();
if (!cfg.isPresent()) {
    cfg = secondary();
}
if (!cfg.isPresent()) {
    cfg = defaults();
}
✓ Java 9+
Optional<Config> cfg = primary()
    .or(this::secondary)
    .or(this::defaults);
このコードに問題がありますか? お知らせください。
🔗

連鎖可能

読みやすいパイプラインでフォールバックを積み重ねます。

遅延評価

フォールバックサプライヤは必要な場合のみ実行されます。

📖

宣言的

「プライマリを試し、次にセカンダリ、次にデフォルト」と読めます。

旧来のアプローチ
ネストされたフォールバック
モダンなアプローチ
.or()チェーン
JDKバージョン
9
難易度
中級
Optional.or()によるフォールバック
利用可能

JDK 9(2017年9月)以降、広く利用可能

Optional.or()は値が存在する場合は元のOptionalを返し、そうでない場合はサプライヤを評価して代替のOptionalを取得します。サプライヤは遅延評価され、必要なときのみ呼び出されます。

共有 𝕏 🦋 in