一文掌握 Java8 的 Optional 的 6 种操作

本文详细介绍了Java8中Optional类的使用,包括通过of、ofNullable创建实例,get、isPresent、ifPresent进行值判断和处理,以及map、flatMap、orElse系列方法处理值为空的情况。Optional的出现旨在帮助开发者更优雅地避免空指针异常,通过filter方法进行条件过滤,并提供了equals、hashCode和toString等方法。总结中强调了Optional作为返回值的使用,以及避免在参数和类属性中使用Optional。
摘要由CSDN通过智能技术生成

Java8 中引入了一个特别有意思类:Optional,一个可以让我们更加轻松的避免 NPE(空指针异常,NullPointException)的工具。

很久很久以前,为了避免 NPE,我们会写很多类似if (obj != null) {}的代码,有时候忘记写,就可能出现 NPE,造成线上故障。在 Java 技术栈中,如果谁的代码出现了 NPE,有极大的可能会被笑话,这个异常被很多人认为是低级错误。Optional的出现,可以让大家更加轻松的避免因为低级错误被嘲讽的概率。

定义示例数据

先定义待操作对象,万能的Student类和Clazz类(用到了 lombok 和 guava):

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Clazz {
    private String id;
    private String name;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private String id;
    private String name;
    private Clazz clazz;
}

然后定义一组测试数据:

final Clazz clazz1 = new Clazz("1", "高一一班");

final Student s1 = new Student("1", "张三", clazz1);
final Student s2 = new Student("2", "李四", null);

final List<Student> students = Lists.newArrayList(s1, s2);
final List<Student> emptyStudents = Lists.newArrayList();
final List<Student> nullStudents = null;

创建实例:of、ofNullable

为了控制生成实例的方式,也是为了收紧空值Optional的定义,Optional将构造函数定义为private。想要创建Optional实例,可以借助of和ofNullable两个方法实现。

这两个方法的区别在于:of方法传入的参数不能是null的,否则会抛出NullPointerException。所以,对于可能是null的结果,一定使用ofNullable。

代码如下:

Optional.of(students);
Optional.of(emptyStudents);
Optional.ofNullable(nullStudents);

Optional类中还有一个静态方法:e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值