当前位置:网站首页>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);
边栏推荐
- 播放器的一些改进
- 图数据库是使用什么作为数据模型的呢?
- Simple Mixed Operations Calculator
- "Weekly Translate Go" This time we have something different!-- "How to Code in Go" series launched
- 面试突击72:输入URL之后会执行什么流程?
- Mobile/Embedded-CV Model-2017: MobelNets-v1
- 数据库不推荐使用外键的9个理由!
- 面试突击72:输入URL之后会执行什么流程?
- FreeSql 将 Saas 租户方案精简到极致[.NET ORM SAAS]
- code inspection tool
猜你喜欢
功夫再高也怕菜刀,产品经理的那些事
分布式系统设计策略
机器学习(十六)推荐系统
2022世界机器人大会即将举办,智能机器人助推传统行业向智能化、数字化转型升级
Solutions and ideas for the problem that Loadrunner's recording event is 0
idea安装步骤
【数学知识】—— 质数/约数
2022 world conference on robots is holding, intelligent robot booster to intelligent, digital transformation and upgrading traditional industry
Simple Mixed Operations Calculator
Jingkai Safety Supervision App technical service support
随机推荐
PHP 手机号脱敏,正则表达式/简易版
使用C# 调用api接口获取法定节假日(百度api)
Tensorflow basic concepts
ReentrantReadWriteLock读写锁和票据锁StempedLock
Feign应用及源码剖析
目标检测中的Bounding Box Regression Loss
三、集合与字典
典型的NoSQL数据库有哪些呢?
目标检测中的Classificition Loss
面试突击72:输入URL之后会执行什么流程?
"Inversion of Control" and "Dependency Inversion", can't you tell the difference?
In ASP.NET Core 2.0, solve the configuration problem of large file upload
English token preprocessing, used to process English sentences into words
Timed Task Framework Quartz-(1) Quartz Introduction and Demo Construction
卫星互联网真能替代 5G?
四、哈希表
电视机画质问题--PQ问题
MongoDB是什么,怎么用?
Leetcode 700. 二叉搜索树中的搜索
文档数据库是用来干什么的呢?