在实际的系统运行过程中,难免会出现报NullPointerException空指针的错误,造成这样的本质原因就是数据或者对象为空,导致程序进一步执行的时候报错!
这时候你会写一堆的if判断,看起来代码非常的又臭又长的。同时if判空越多会造成过多的代码分支,后续代码维护也就越来越复杂。
从Java8开始引入了一个新类 java.util.Optional,这是一个对象的容器,意味着可能包含或者没有包含一个非空的值。下面重点看一下Optional的常用方法:
publicfinalclassOptional< T> {
// 通过指定非空值创建Optional对象
// 如果指定的值为null,会抛空指针异常
public static<T> Optional<T> of(T value){
returnnewOptional<>(value);
}
// 通过指定可能为空的值创建Optional对象
public static<T> Optional<T> ofNullable(T value){
returnvalue == null? empty : of(value);
}
// 返回值,不存在抛异常
public T get{
if(value == null) {
throw new NoSuchElementException( "No value present");
}
return value;
}
// 如果值存在,根据consumer实现类消费该值
public void ifPresent(Consumer<? superT> consumer) {
if(value != null)
consumer.accept(value);
}
// 如果值存在则返回,如果值为空则返回指定的默认值
publicT orElse(T other){
return value != null? value : other;
}