java Optional

我还没用过java8的一些语法,有点老古董了,记录下Optional怎么用。

从源码看,Optional内部持有一个对象, 有一些api对这个对象进行判空处理。

静态方法of ,生成Optional对象, 但这个value不能为空,因为构造器判断value为空直接抛异常。

复制代码

如果值可以为空,调用下面的ofNullable方法生成Optional。

复制代码

常用方法:

1、get方法,value确定非空再调用该方法,可以强制开发处理空值。

复制代码

2、isPresent、isEmpty方法, 判断是否有值

复制代码

3、ifPresent 值非空时,传该值执行一个操作。

复制代码
public void ifPresent(Consumer<? super T> action) {
    if (this.value != null) {
        action.accept(this.value);
    }
}

4、ifPresentOrElse方法, 值非空时执行一个操作,否则执行另一个操作

5、filter 方法,判断值是否满足一个条件

6、map 方法, 转化数据。

7、flatMap方法,同map,但会检查转化后的数据是否为空,转化为null会抛异常。

8、当Optional存的值为空,则生成一个Optional(值仍然可能为空)

9、stream方法,生成流

10、orElseGet ,获取值,值为null则生成一个值

11、 还有空值就抛异常的方法。

支持链式调用,可与方法引用配合使用,比较方便,

java 复制代码
Optional.ofNullable(user)
        .map(User::getName)
        .filter(name -> !name.isEmpty())
        .orElse("Unknown");

总结:Optional 主要是对数据进行各种处理,比如空值处理,数据转化、数据过滤、异常处理等。

相关推荐
ScilogyHunter15 分钟前
Hercules系列安全MCU功能安全原理详解
java·单片机·安全·hercules
博风34 分钟前
eclipse中配置maven,以及在本地使用maven。
java·eclipse·maven
云-缩影35 分钟前
实际项目中怎么选排序算法:从面试题到工程落地
java·算法·排序算法
追星星の人37 分钟前
java web项目(eclipse软件)全流程备份
java·servlet
OxYGC37 分钟前
[工程] PHP2Shell 漏洞解析:两条 PHP 内核 RCE,为什么应用层的防护全部失效
android·开发语言·php
小徐不徐说40 分钟前
数据库存储基础:理解表结构、主键、事务与 BLOB
开发语言·数据库·c++·qt·程序设计
草莓熊Lotso1 小时前
【C++ 基于微服务的即时通讯系统】网关基建:cpp-httplib 与 WebSocketpp 从入门到实战
linux·开发语言·数据库·c++·redis·微服务·云原生
李纲明1 小时前
WordPress 媒体库上传失败或一直转圈:先核 PHP 上传限制与目录权限,再查安全插件与对象存储
运维·开发语言·安全·php·wordpress·媒体库·devdiy
文丑颜不良啊2 小时前
LeetCode1461~1480题目解析
java·leetcode
2301_780789669 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos