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)

posted on 2018-07-06 10:17 CanntBelieve 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/FlyAway2013/p/9272153.html

Optional 的基本用法相关推荐

  1. nothing的含义介绍和 Optional ByVal的用法

    在对象定义的时候,会把该变量设成Nothing, Dim str As String = Nothing Dim int As Integer = Nothing 意思是讲该变量初始化成她的默认值.对 ...

  2. Java8 Optional,可以这样用啊

    以下文章来源方志朋的博客,回复"666"获面试宝典 很多公众号其实都发过 Optional 的文章, 但大多文章都是介绍了 Optional 的 API 用法,却没有给出怎么正确的 ...

  3. Optional 是个好东西,你真的会用么?

    点击关注公众号,Java干货及时送达  作者:zjhred blog.csdn.net/zjhred/article/details/84976734 引言 在文章的开头,先说下NPE问题,NPE问题 ...

  4. 如何正确的使用Java8中的Optional类来消除代码中的null检查

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:一书生VOID lw900925.github.io/jav ...

  5. Java8 Optional 最佳实践

    作者 | ES_her0 来源 | https://xie.infoq.cn/article/e3d1f0f4f095397c44812a5be 很多公众号其实都发过 Optional 的文章, 但大 ...

  6. Java8新特性Optional、接口中的默认方法与静态方法

    Optional Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念 ...

  7. JAVA8 Optional新特性和使用详解

    文章目录 一.Optional简介 二.应用Optional 1.创建Optional对象 2.Optional中map用法 3.Optional其它方法用法 三.Optional实战 1.创建Opt ...

  8. @value 默认值为null_JAVA8之妙用Optional解决判断Null为空的问题

    引言在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullPointerException.假设我们有两个类,他们的UML类图如下图所示 在这种情况下,有如下代码 user.g ...

  9. JAVA8之妙用Optional解决判断Null为空问题

    来源:https://blog.csdn.net/zjhred/article/details/84976734 背景 在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullP ...

最新文章

  1. 基于OpenCV给图片添加边框
  2. python版本的策略模式
  3. ERP实施成功与否,企业文化是致命因素?
  4. Leaflet中使用Leaflet.fullscreen插件实现全屏效果
  5. 动态开辟指定数量的线程来查找动态开辟的数组中的1000000数据中的值
  6. css 固定内容显示范围,css之让文字在一定范围内显示,不超过固定的宽度和高度...
  7. 人脸检测的harr检测函数
  8. ArcEngine调用FeatureToLine工具传参问题
  9. Linux Shell 函数返回值
  10. php语法基础考试,我的php学习第二十六天——PHP基础语法
  11. 自定义vb.net 窗口位置
  12. ipmitool源码解析(一)——一次带内ipmitool raw data发送过程
  13. 重庆GDP超过了广州,纯属正常?
  14. VScode输入感叹号无法生成HTML模板
  15. 邮箱有效性多种验证方式
  16. 阿里云网络和安全配置实验(云计算)
  17. 做程序界中的死神,提升灵力上限
  18. 应该去看看的十大论坛!!!
  19. shell随机输出一个人或多个人的学号及姓名
  20. Cypress之管理配置信息

热门文章

  1. Api文档生成工具与Api文档的传播(pdf)
  2. 转载:介绍AD另外一种奇葩的多通道复用的方法
  3. 利用js实现popup弹窗
  4. 1266: [AHOI2006]上学路线route
  5. Js取float型小数点后两位数的方法
  6. 使用Modernizr探测HTML5/CSS3新特性
  7. 第三部分:Android 应用程序接口指南---第二节:UI---第六章 对话框
  8. 软件推荐---站长查询工具
  9. [20190214]11g Query Result Cache RC Latches.txt
  10. CentOS 7 更换 yum 源