当前位置:网站首页>Optional常用方法解析
Optional常用方法解析
2022-08-08 10:26:00 【合拍ooo】
Optional常用方法解析
Optional 类是一个可以为null的容器对象。可以很好的解决空指针异常。
创建Optional对象
创建一个空的Optional对象
Optional<String> empty = Optional.empty();
创建一个非空的Optional对象
Optional<String> test = Optional.of("test");
创建一个即可空又可非空的Optional对象
Optional<Object> object = Optional.ofNullable(null);
常见操作
isPresent()
//判断是否为null
Optional<Object> object = Optional.ofNullable(null);
if (object.isPresent()) {
System.out.println(123);
}
get()
//如果Optional有值则将其取出,否则抛出NoSuchElementException。
Optional<String> test = Optional.ofNullable("test");
if (test.isPresent()) {
String s = test.get();
System.out.println(s);
}
ifPresent()
//如果Optional实例有值则调用传入的Lambda表达式,否则不做处理
Optional<String> test = Optional.ofNullable("test");
test.ifPresent(System.out::println);
orElse()
//如果有值则将其返回,否则返回指定的其它值。
Optional<String> test = Optional.empty();
System.out.println(test.orElse("哈哈哈哈"));
orElseGet()
//与orElse方法类似,但orElse只能传入Optional泛型中的对象
//orElseGet方法可以接受Supplier接口的实现来生成默认值
Optional<String> test = Optional.empty();
test.orElseGet(() -> "123");
map()
//如果有值,则对其执行调用mapping函数得到返回值。如果返回值不为null,则创建包含mapping返回值的Optional作为map方法返回值,否则返回空Optional。
Optional<String> test = Optional.of("12");
Optional<String> s = test.map(x -> x + "12");
s.ifPresent(System.out::println);
flatmap()
//与map方法类似,区别在于mapping函数的返回值不同。map方法的mapping函数返回值可以是任何类型T,而flatMap方法的mapping函数必须是Optional。
Optional<String> test = Optional.of("12");
Optional<String> s = test.flatMap(x -> Optional.of(x + "12"));
s.ifPresent(System.out::println);
filter
//如果有值并且满足断言条件返回包含该值的Optional,否则返回空Optional。
Optional<Integer> integer = Optional.of(12);
Optional<Integer> integer1 = integer.filter(i -> i > 6);
integer1.ifPresent(System.out :: println);
边栏推荐
- A small test of basic grammar, Go lang1.18 introductory refining tutorial, from Bai Ding to Hongru, basic grammar of go lang and the use of variables EP02
- 苹果开发者账号申请流程完整版
- 市面上有哪些经典的文档数据库呀?
- LeetCode每日一题--有序队列(整理最小表示法)
- 数据库不推荐使用外键的9个理由!
- 列存储数据库是通过什么来定位的呢?
- 功夫再高也怕菜刀,产品经理的那些事
- Hystrix熔断器
- 小程序使用npm包
- 新款“廉价”SUV曝光,安全、舒适一个不落
猜你喜欢
随机推荐
NoSQL数据库有哪些优势吗?又有哪些劣势呢?
C# api 将base64编码 上传至fastdfs转成文件
Redis是持久化键值数据库嘛?
小程序使用formdata格式传参
MySQL学习第一部分:认识MySQL
Simple Mixed Operations Calculator
使用.NET简单实现一个Redis的高性能克隆版(三)
Redis 定长队列的探索和实践
FreeSql 将 Saas 租户方案精简到极致[.NET ORM SAAS]
重载与重写有什么区别?
go调度原理
我用开天平台做了一个城市防疫政策查询系统【开天aPaaS大作战】
Machine learning model too slow?Look at Intel (R) extension to accelerate
Forward Propagation and Back Propagation
开源一夏 | 牛plus,多层嵌套动态JSON该如何解析总结
五、业务数据分析
面试突击72:输入URL之后会执行什么流程?
三、集合与字典
snmptrapd+snmptt接收告警并用py脚本发送
详细讲解修改allure报告自定义的logo和名称中文