Optional 的基本用法
参考:
https://www.cnblogs.com/xingzc/p/5778090.html
http://www.runoob.com/java/java8-optional-class.html
empty |
static <T> Optional<T> empty()
返回空的 Optional 实例。 |
equals |
boolean equals(Object obj)
判断其他对象是否等于 Optional。 |
filter |
Optional<T> filter(Predicate<? super <T> predicate)
如果值存在,并且这个值匹配给定的 predicate,返回一个Optional用以描述这个值,否则返回一个空的Optional。 |
flatMap |
<U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper)
如果值存在,返回基于Optional包含的映射方法的值,否则返回一个空的Optional |
get |
T get()
如果在这个Optional中包含这个值,返回值,否则抛出异常:NoSuchElementException |
hashCode |
int hashCode()
返回存在值的哈希码,如果值不存在 返回 0。 |
ifPresent |
void ifPresent(Consumer<? super T> consumer)
如果值存在则使用该值调用 consumer , 否则不做任何事情。 |
isPresent |
boolean isPresent()
如果值存在则方法会返回true,否则返回 false。 |
map |
<U>Optional<U> map(Function<? super T,? extends U> mapper)
如果存在该值,提供的映射方法,如果返回非null,返回一个Optional描述结果。 |
of |
static <T> Optional<T> of(T value)
返回一个指定非null值的Optional。 |
ofNullable |
static <T> Optional<T> ofNullable(T value)
如果为非空,返回 Optional 描述的指定值,否则返回空的 Optional。 |
orElse |
T orElse(T other)
如果存在该值,返回值, 否则返回 other。 |
orElseGet |
T orElseGet(Supplier<? extends T> other)
如果存在该值,返回值, 否则触发 other,并返回 other 调用的结果。 |
orElseThrow |
<X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier)
如果存在该值,返回包含的值,否则抛出由 Supplier 继承的异常 |
toString |
String toString()
返回一个Optional的非空字符串,用来调试 |
Optional 可以解决空指针异常, 但是, 如果使用不到, 反而会引起更多的问题呢.
比如get 方法, 就可以出现NoSuchElementException , 这就不仅仅是null 的麻烦了, 而是直接出现了 npe, 麻蛋.
java.util.NoSuchElementException: No value present
at java.util.Optional.get(Optional.java:135)
null 有时候是无法避免的, 怎么办? 进行isPresent 判断吗? 感觉更加麻烦了... 这样吧: orElse(null)
转载于:https://www.cnblogs.com/FlyAway2013/p/9272153.html
Optional 的基本用法相关推荐
- nothing的含义介绍和 Optional ByVal的用法
在对象定义的时候,会把该变量设成Nothing, Dim str As String = Nothing Dim int As Integer = Nothing 意思是讲该变量初始化成她的默认值.对 ...
- Java8 Optional,可以这样用啊
以下文章来源方志朋的博客,回复"666"获面试宝典 很多公众号其实都发过 Optional 的文章, 但大多文章都是介绍了 Optional 的 API 用法,却没有给出怎么正确的 ...
- Optional 是个好东西,你真的会用么?
点击关注公众号,Java干货及时送达 作者:zjhred blog.csdn.net/zjhred/article/details/84976734 引言 在文章的开头,先说下NPE问题,NPE问题 ...
- 如何正确的使用Java8中的Optional类来消除代码中的null检查
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:一书生VOID lw900925.github.io/jav ...
- Java8 Optional 最佳实践
作者 | ES_her0 来源 | https://xie.infoq.cn/article/e3d1f0f4f095397c44812a5be 很多公众号其实都发过 Optional 的文章, 但大 ...
- Java8新特性Optional、接口中的默认方法与静态方法
Optional Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念 ...
- JAVA8 Optional新特性和使用详解
文章目录 一.Optional简介 二.应用Optional 1.创建Optional对象 2.Optional中map用法 3.Optional其它方法用法 三.Optional实战 1.创建Opt ...
- @value 默认值为null_JAVA8之妙用Optional解决判断Null为空的问题
引言在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullPointerException.假设我们有两个类,他们的UML类图如下图所示 在这种情况下,有如下代码 user.g ...
- JAVA8之妙用Optional解决判断Null为空问题
来源:https://blog.csdn.net/zjhred/article/details/84976734 背景 在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullP ...
最新文章
- 基于OpenCV给图片添加边框
- python版本的策略模式
- ERP实施成功与否,企业文化是致命因素?
- Leaflet中使用Leaflet.fullscreen插件实现全屏效果
- 动态开辟指定数量的线程来查找动态开辟的数组中的1000000数据中的值
- css 固定内容显示范围,css之让文字在一定范围内显示,不超过固定的宽度和高度...
- 人脸检测的harr检测函数
- ArcEngine调用FeatureToLine工具传参问题
- Linux Shell 函数返回值
- php语法基础考试,我的php学习第二十六天——PHP基础语法
- 自定义vb.net 窗口位置
- ipmitool源码解析(一)——一次带内ipmitool raw data发送过程
- 重庆GDP超过了广州,纯属正常?
- VScode输入感叹号无法生成HTML模板
- 邮箱有效性多种验证方式
- 阿里云网络和安全配置实验(云计算)
- 做程序界中的死神,提升灵力上限
- 应该去看看的十大论坛!!!
- shell随机输出一个人或多个人的学号及姓名
- Cypress之管理配置信息