Java8中使用Optional处理null对象
Optional 是一个容器对象,可以存储对象、字符串等值,当然也可以存储 null 值。Optional 提供很多有用的方法,能帮助我们将 Java 中的对象等一些值存入其中,这样我们就不用显式进行空值检测,使我们能够用少量的代码完成复杂的流程。
有如下方法:
of() 方法,可以将值存入 Optional 容器中,如果存入的值是 null 则抛异常。
public static void main(String[] args) {
// 传入正常值,正常返回一个 Optional 对象
Optional<String> optional1 = Optional.of("hhhh");
System.out.println(optional1);
// 传入参数为 null,抛出 NullPointerException.
Optional optional2 = Optional.of(null);
System.out.println(optional2);
}

- ofNullable() 方法,可以将值存入 Optional 容器中,即使值是 null 也不会抛异常。
-
// 传入正常值,正常返回一个 Optional 对象 Optional<String> optional1 = Optional.ofNullable("hhhh"); System.out.println(optional1); // 传入 null 参数,正常返回 Optional 对象 Optional optional2 = Optional.ofNullable(null); System.out.println(optional2); ![]()
- get() 方法,可以获取容器中的值,如果值为 null 则抛出异常。
-
// 传入正常值,正常返回一个 Optional 对象,并使用 get 方法获取值 Optional optional1 = Optional.ofNullable("hhh"); System.out.println(optional1.get()); // 传入参数为 null 生成一个 Optional 对象,并使用 get 方法获取值 Optional optional2 = Optional.ofNullable(null); System.out.println(optional2.get());![]()
- orElse() 方法,可以获取容器中的值,如果值为 null 则返回设置的默认值。
-
// 传入正常参数,获取一个 Optional 对象,并使用 orElse 方法设置默认值 Optional optional1 = Optional.ofNullable("hhh"); Object object1 = optional1.orElse("111"); System.out.println("如果值不为空:"+object1); // 传入 null 参数,获取一个 Optional 对象,并使用 orElse 方法设置默认值 Optional optional2 = Optional.ofNullable(null); Object object2 = optional2.orElse("111"); System.out.println("如果值为空:"+object2);![]()
- isPresent() 方法,该方法可以判断存入的值是否为空。
-
Optional optional1 = Optional.ofNullable("hhh"); System.out.println("传入正常值返回:" + optional1.isPresent()); // 传入参数为 null 生成一个 Optional 对象,并使用 isPresent 方法 Optional optional2 = Optional.ofNullable(null); System.out.println("传入 null 值返回:" + optional2.isPresent());![]()
- …等等一些其它常用方法,参考
- Oracle JDK API 参考文档
https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html
- 菜鸟教程-Java 8 Optional 类
https://www.runoob.com/java/java8-optional-class.html
使用 Optional 可以帮助我们解决业务中,减少值动不动就抛出空指针异常问题,也减少 null 值的判断,提高代码可读性。





浙公网安备 33010602011771号