Java8新加了一个Optional类,根据文档注释看,这是一个处理null值和non-null值的类,使用这个类,不要再担心出现NPE的问题。
可以把它当作一个工具类使用,不能继承。
三个静态方法:
static <T> Optional<T> empty()
返回一个空的Optional。static <T> Optional<T> of(T value)
value不能为null。static <T> Optional<T> ofNullable(T value)
value为null则返回一个空的Optional。
一般来说,都会使用ofNullable()方法。
实例方法:
-
boolean equals(Object obj)
虽然接受Object,但下面这样并不相等Integer a = 3; boolean equals = Optional.ofNullable(a).equals(3);
因为equals中这样判断
if (!(obj instanceof Optional)) { return false; }
-
Optional<T> filter(Predicate<? super T> predicate)
接受一个函数式接口Predicate,这个接口接受一个参数,返回boolean类型,根据名字可知,就是一个过滤器,符合条件就返回包含指定值的Optional&