Java8中的Optional的orElse、orElseGet和orElseThrow的使用

orElse
语法:
Optional.ofNullable().orElse();
示例:

public class OptionalDemo {
public static void main(String[] args) {
System.out.println(Optional.ofNullable("有值,不是空用自己").orElse("替代值"));
System.out.println(Optional.ofNullable(null).orElse("替代值"));

// 经常使用到list上,就不需要写list的判空代码了
test(null);
test1(null);
}

public static void test(List<Integer> list) {
// 集合为空返回
if (list == null || list.isEmpty()) {
return;
}
// 不是空执行操作
for (Integer integer : list) {
System.out.println(integer);
}
}

public static void test1(List<Integer> list) {
Optional.ofNullable(list).orElse(new ArrayList<>()).forEach(System.out::println);
}
}
我们可以看到使用Optioan的orElse明显少些了许多代码,减少了空指针的发生。

orElseGet
orElseGet和orElse的用法基本是一直的,就是在输入的元素判断是空时执行orElseGet或orElse
区别就是:
orElse是返回一个替代值,例如输入null,返回一个new ArrayList()
orElseGet是可以传入一个supplier接口的lambda表达式,来实现不同的逻辑

Object value = Optional.ofNullable(null).orElseGet(() -> {
// 例如之前的值是从Redis缓存中查询的值,没有查询到
// 则查询数据库
// 将值保存到redis
// 返回值
return "从数据库查询到的值";
});

orElseThrow
理解了上面的,这里就更好理解了,orElseThrow就是输入是null时,就返回一个异常对象,会自动throw这个异常对象。

Optional.ofNullable(null).orElseThrow(()->new RuntimeException("输入的值是空"));
————————————————
版权声明:本文为CSDN博主「Owen Guo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_46307070/article/details/132523034

posted on   五官一体即忢  阅读(1067)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示