侧边栏壁纸
博主头像
憨憨大头个人博客博主等级

心存希冀,目有繁星

  • 累计撰写 110 篇文章
  • 累计创建 13 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Java8中的Optional-优雅的判空

Administrator
2024-09-02 / 0 评论 / 0 点赞 / 9 阅读 / 2392 字

语法

1. empty()

empty()返回一个空的Optional对象

2. of(T value)

通过of方法所构造出的Optional对象

  1. 当value值为空时,会报NullPointerException异常
  2. 当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();
}
0

评论区