一、什么是 Optinal

Optinal 是 Java 8 新特性中的一个类,它的字面意思是可选的,用来替代 null,避免空指针异常。Optinal 类的实例不能被直接实例化,它只能通过工厂方法来创建,它提供了很多有用的方法,来帮助我们判断有值的时候可以进行相应的处理,没有值的时候也可以做出相应的处理,从而消除空指针异常。

二、为什么要使用 Optinal

由于 Java 中的变量可以被赋值为 null,而当程序试图访问 null 引用时,就会发生空指针异常。在 Java 8 中,引入了 Optinal 类,以解决这个问题。Optinal 类的实例不能被直接实例化,它只能通过工厂方法来创建,比如:

Optional<String> opt = Optional.of("Hello");
Java

Optinal 的实例可以通过 isPresent() 方法来判断是否包含值,如果调用 get() 方法获取值,但是值不存在,就会抛出 NoSuchElementException 异常,因此,Optinal 提供了一种安全的方式来访问值,从而避免空指针异常。

三、Optinal 的优势

首先,Optinal 类提供了一种安全的方式来访问值,从而避免空指针异常。其次,Optinal 类提供了一系列有用的方法,可以用来处理值,比如 orElse() 方法,它可以用来设置默认值,如果 Optinal 实例中没有值,就会返回传入的默认值:

String name = opt.orElse("world");
Java

Optinal 还提供了 map() 方法,它可以用来对 Optinal 中包含的值进行转换:

Optional<Integer> opt = Optional.of(1);
opt.map(i -> i + 1).orElse(0); // 2
Java

最后,Optinal 还提供了 filter() 方法,它可以用来过滤 Optinal 中的值:

Optional<Integer> opt = Optional.of(1);
opt.filter(i -> i > 0).orElse(0); // 1
Java

总之,Optinal 类提供了一系列有用的方法,可以用来处理值,从而消除空指针异常。