网站首页 > 资源文章 正文
1 什么是Optional
Optional是Java 8中提供的容器类,用于解决NPE问题。Optional的定义如下:
通过源码可以看到Optional中有两个属性,分别是EMPTY和value,EMPTY默认初始化一个value值为null的Optional对象。value就是Optional容器存储数据的属性。注意Optional的构造器是private,所以不能通过new创建对象的方式来创建Optional对象。
对应还基本数据类型的Optional,分别是OptionalInt、OptionalDouble和OptionalLong。
2 创建
- empty:获取一个value为null的Optional对象
- of:创建一个不能为null的Optional对象,该方法接收一个参数作为value值,该参数不能为null
- ofNullable:创建一个可以为null的Optional对象,该方法接收一个参数作为value值,该参数可以为null
如果该方法中传入的是一个null值,那么得到的Optional对象将和Optional.empty()相等。
3 获取值
- get:用于获取Optional中的value的值
4 判断空值
- isPresent:判断Optional中value属性是否为null,如果不为null,则返回true,反之则返回false
- ifPresent:该方法接收一个Comsumer类型参数,用于判断值是否存在,如果存在就执行Comsumer操作
5 操作值
- filter:过滤值。该方法接收一个Predicate参数,如果Optional中的值满足参数条件,就返回该Optional,否则返回空的Optional,如果原来Optional中值为null,新生成的Optional中值也为null
- map:操作值返回新值。该方法接收一上Function类型对象,接收Optional中的值,生成一个新值包装成Optional并返回,如果原来Optional中值为null,新生成的Optional中值也为null
- flatMap:接收一个Function参数,该Function参数返回一个Optional对象
5 操作空值
- orElse:当Optional中的值为null时,返回该方法接收的参数
- orElseGet:该方法接收一个Supplier参数,用于在Optional中的值为null时返回Supplier生成的值
- orElseThrow:该方法接收一个Supplier参数,该Supplier生成一个异常,用于在Optional中的值为null时抛出该异常
猜你喜欢
- 2024-10-28 java新特性之Optional类介绍,解决空指针问题的终极类
- 2024-10-28 Jdk14都要出了,还不能使用 Optional优雅的处理空指针?
- 2024-10-28 「Java8」 你有正确的使用 Optional吗?
- 2024-10-28 深入探讨 Pydantic 中的 Optional 和 Union 类型
- 2024-10-28 漫画:你居然不知道 Maven 中 Optional 和 Exclusions 的区别?
- 2024-10-28 Java8-关于Optional的那些事(关于java application)
- 2024-10-28 Jackson 中使用 Optional(jackson string to object)
- 2024-10-28 还在重复写空指针检查代码?考虑使用 Optional 吧
- 2024-10-28 jdk8的optional深入详解(jdk8 document)
- 2024-10-28 Java 中的 Optional(java optional.of)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)