Optional优雅处理null值

Optional结合lambda表达式更优雅地处理null值(日常开发中常用的)

假设我们有一个学生对象

public class Student {
    private String name;
    private Integer age;

    // 全参构造函数
    public Student(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public Integer getAge() {
        return age;
    }
    // toString 方法
    @Override
    public String toString() {
        return"Student{" + "name='" + name + '\'' + ", age=" + age + '}';
    }
}

1、判断学生年龄是否符合标准

public void optionalTest() {
    Student student = new Student();
    Optional.ofNullable(student)
        .map(Student::getAge)
        .filter(o -> o < 18)
        .orElseThrow(() -> new RuntimeException("所有学生年龄都超过18岁了"));
}

通过optional机制优雅地规避学生对象为null的场景

2、优雅的处理集合为null的场景

public void optionalTest() {
    List<Student> students = null;
    Optional.ofNullable(students).orElse(Lists.newArrayList())
        .stream()
        .map(Student::getName)
        .collect(Collectors.toList());
}

3、优雅的获取学生的名字

public void optionalTest() {
    Student student = null;
    Optional.ofNullable(student)
        .map(Student::getName)
        .filter(StringUtil::isNotEmpty)
        .orElse(DEFAULT_STUDENT);
}

从以上三种场景可以明显看出,Optional + Lambda 让我们少写了很多 if-else 代码块。传统的 Java 写法显得冗长且难以理解,而 Optional+Lambda 则简洁明了,清晰易懂。

总结

通过结合 Lambda 表达式和 Optional,Java 的 null 处理变得更加优雅和简洁。希望这篇文章能帮助你更好地理解和使用这些特性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值