当前位置:网站首页>Optional common method analysis
Optional common method analysis
2022-08-08 10:32:00 【In ooo】
Optional常用方法解析
Optional 类是一个可以为null的容器对象.Can solve the null pointer exception very well.
创建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()
//如果OptionalIf there is a value, take it out,否则抛出NoSuchElementException.
Optional<String> test = Optional.ofNullable("test");
if (test.isPresent()) {
String s = test.get();
System.out.println(s);
}
ifPresent()
//如果OptionalIf the instance has a value, the passed in is calledLambda表达式,否则不做处理
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方法可以接受SupplierAn implementation of the interface to generate default values
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
- MySQL源码解析之执行计划
- 图数据库是使用什么作为数据模型的呢?
- 列存储数据库是通过什么来定位的呢?
- 使用C# 调用api接口获取法定节假日(百度api)
- 使用.NET简单实现一个Redis的高性能克隆版(三)
- MySQL学习第一部分:认识MySQL
- NLP和CV中的Local和Global建模
- MongoDB是什么,怎么用?
- FreeSql 将 Saas 租户方案精简到极致[.NET ORM SAAS]
猜你喜欢
牛客收藏上万的神作!这份阿里P8手写的MySQL主从原理手册真的牛
开源一夏 | 牛plus,多层嵌套动态JSON该如何解析总结
"Weekly Translate Go" This time we have something different!-- "How to Code in Go" series launched
重载与重写有什么区别?
People's Congress Jincang database login, view database
关于振弦采集模块及采集仪振弦频率值准确率的问题
四、业务数据解析
Redis 定长队列的探索和实践
How to uniformly handle error exceptions in embedded C programming?
Machine learning model too slow?Look at Intel (R) extension to accelerate
随机推荐
SVN基本操作--文字解析版
MongoDB是什么,怎么用?
idea installation steps
面试突击72:输入URL之后会执行什么流程?
文档数据库中的文档有什么用呢?
JVM的GC讲解及调优
Flutter实现搜索的三种方式
centos 安装redis
功夫再高也怕菜刀,产品经理的那些事
Service Mesh迁移原则
贵州酒店集团特产券解析
搞清楚系统到底怎样支撑高并发以及架构图的绘制(面试向)
MySQL源码解析之执行计划
上海控安SmartRocket系列产品推介(二):SmartRocket Modeler可视化建模开发工具
Optional常用方法解析
shell 创建LVM逻辑据卷
在.net core中,利用C#实现fastdfs多文件批量上传
列存储数据库是什么呢?
我用开天平台做了一个城市防疫政策查询系统【开天aPaaS大作战】
有哪些典型的列存储数据库呢?