参考:https://www.runoob.com/java/java8-optional-class.html
java8中引入了一个新类:Optional,用于日常编码中对空指针异常进行限制和处理:
Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。
Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。
Optional 类的引入很好的解决空指针异常。
返回值 | 方法 | 说明 |
static <T> Optional<T> | empty() | 返回一个空 Optional 实例 |
static <T> Optional<T> | of(T value) | 将非空值设置到Optional实例并返回该实例 |
static <T> Optional<T> | ofNullable(T value) | 将值设置到Optional实例中并返回该实例 |
T | get() | 如果一个值是在这 Optional ,返回值,否则将 NoSuchElementException |
T | orElse(T other) | 如果当前有值且非空则返回该值,否则返回 other |
类声明
以下是一个java.util.Optional<T>类的声明 public final class Optional<T> extends Object
测试:
package test.HimmaQ;
import java.util.Optional;
public class OptionalTest {
public static void main(String[] args) {
Optional.of(null); //NullPointerException
Optional.ofNullable(null);//可放入null值(允许为null)
System.out.println(Optional.ofNullable("1111").get());//输出1111
Optional.ofNullable(null).get();//Optional.get() NoSuchElementException,当Optional中放的是null时用get()取则报该异常
System.out.println(Optional.ofNullable(null).orElse("2222"));//输出2222
System.out.println(Optional.ofNullable("1111").orElse("2222"));//输出1111
System.out.println(Optional.ofNullable(null).isPresent());//输出false
System.out.println(Optional.ofNullable("1111").isPresent());//输出true
}
}