Optional 可以链式调用,而且这正是它设计的主要目的之一 —— 用来避免层层 null 判断(避免嵌套的 if (x != null))。
下面以 Java 的 Optional 为例说明(其他语言如 Swift 的 Optional、Kotlin 的 ? 也类似,但语法不同)。
map + filter + orElseString result = Optional.ofNullable(user)
.map(User::getAddress)
.map(Address::getCity)
.filter(city -> city.startsWith("B"))
.orElse("Unknown");
如果中间任何一步为 null:
"Unknown"flatMap(返回 Optional 时)Optional<String> result = Optional.ofNullable(user)
.flatMap(User::getOptionalEmail)
.map(String::toUpperCase);
⚠️ 注意:
map:返回值会被自动包成 OptionalflatMap:你已经返回 Optional,不要再包一层ifPresent(终端操作)Optional.ofNullable(user)
.ifPresent(u -> System.out.println(u.getName()));
链式调用的终点通常是:
orElse / orElseGetifPresentisPresentget()(不推荐)例如下面这样是错误思路:
Optional.ofNullable(user)
.map(User::getName)
.ifPresent(...) // ✅ 到这里就结束了
.map(...) // ❌ 不能再继续链式
✅ 适合:
null 判断❌ 不适合:
Optional 当“万能容器”Optionalget()如果你指的是 某种具体语言(Java / Swift / Kotlin / Python)或某个库里的 Optional,可以告诉我,我可以给你更贴合的例子。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。