Optional是一个容器对象,可以包含也可以不包含非null值。Optional在Java 8中引入,目的是解决NullPointerExceptions的问题。它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。
常用的类方法
- static Optional empty()
- 返回空的Optional实例
- static Optional of(T value)
- 返回一个指定非null值的Optional
- static Optional ofNullable(T value)
- 如果为非空,返回 Optional 描述的指定值,否则返回空的 Optional
- T orElse(T other)
- 如果存在该值,返回值, 否则返回 other
- T orElseGet(Supplier other)
- 如果存在该值,返回值, 否则触发 other,并返回 other 调用的结果
- T orElseThrow(Supplier exceptionSupplier)
- 如果存在该值,返回包含的值,否则抛出由 Supplier 继承的异常
- boolean equals(Object obj)
- 判断其他对象是否等于 Optional。
- Optional filter(Predicate predicate)
- 如果值存在,并且这个值匹配给定的 predicate,返回一个Optional用以描述这个值,否则返回一个空的Optional
- T get()
- 如果在这个Optional中包含这个值,返回值,否则抛出异常:NoSuchElementException
- void ifPresent(Consumer consumer)
- 如果值存在则使用该值调用 consumer , 否则不做任何事情
- boolean isPresent()
- 如果值存在则方法会返回true,否则返回 false
使用例子:
publicclassOptionalDemo { publicstaticvoidmain(String[] args) { Integera=null; Optional<Integer>opt=Optional.ofNullable(a); if (!opt.isPresent()) { System.out.println("a is a null value"); } Integerb=1; Optional<Integer>opt2=Optional.of(b); System.out.println(opt2.get()); } }
输出: