语法
1. empty()
empty()返回一个空的Optional对象
2. of(T value)
通过of方法所构造出的Optional对象
- 当value值为空时,会报NullPointerException异常
- 当value值不为空时,正常构造Optional对象
3.ofNullable(T value)
ofNullable方法在构造Optional的时候如果value为空,那么返回empty方法构建的Optional对象(一个Optional中value为空的Optional对象),也就是说ofNullable支持空值得创建
4. isPresent和ifPresent
ifPresent方法判断Optional中的value是否为空,不为空返回true;而ifPresent方法是在Optional中value不为空的情况下做一些操作
if(user!=null){
dosomething(user);
}
转换
Optional.ofNullable(user)
.ifPresent(u->{
dosomething(u);
});
5.filter(Predicate)<? super T> predicate)
6.map和flatMap
Optional.ofNullable(user).map(User::getAddress);
Optional.ofNullable(user).flatMap(u ->Optional.ofNullable(u.getAddress()));
flatMap处理的参数为Optional类型;上图方法均是获取Address写法
7. orElse和orElseGet以及orElseThrow
orElse和orElseGet以及orElseThrow都是处理Optional值为空的情况,如果传入的value为空,进行操作,orElseThrow在value为空的情况抛出异常。 orElse在orElseGet的区别在与,如果传入的value不为空,orElse中的操作仍然要执行,如下图,在user不为空的情况下,仍然会输出display和创建一个新的User对象
public void optional0rElse(User user) throws Exception {
Optional.ofNullable(user).orElse(display());
Optional.ofNullable(user).orElseGet(this::display);
Optional.ofNullable(user).orElseThrow(() ->new Exception("display"));
}
public User display(){
System.out.println("display" );return new User();
}
评论区