一、痛点

传统写法常见空指针:

String name = user.getAddress().getCity().getName(); // NPE!

二、Optional 简介

OptionalJava 8 引入的容器类,用于优雅地处理 null

Optional<String> name = Optional.ofNullable(user)
    .map(User::getAddress)
    .map(Address::getCity)
    .map(City::getName);
System.out.println(name.orElse("未知城市"));

三、常用方法

方法 作用
of(value) 创建非空 Optional
ofNullable(value) 可空创建
isPresent() 是否有值
ifPresent(Consumer) 有值时执行
map(Function) 值映射
orElse(value) 取值或默认值
orElseGet(Supplier) 延迟默认值
orElseThrow() 抛异常

四、示例:安全取值

String city = Optional.ofNullable(user)
    .map(User::getAddress)
    .map(Address::getCity)
    .map(City::getName)
    .orElse("未知");

五、小结

✅ 优点:

  • 避免 NullPointerException
  • 代码更简洁、函数式

⚠️ 注意:

  • 不建议滥用(特别是实体字段)
  • 最佳用途是链式取值与函数式处理
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐