千家信息网

Java 8中java.util.Optional如何使用

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这期内容当中小编将会给大家带来有关Java 8中java.util.Optional如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Optional 主要用来
千家信息网最后更新 2025年12月01日Java 8中java.util.Optional如何使用

这期内容当中小编将会给大家带来有关Java 8中java.util.Optional如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。


Optional 主要用来判断是否为空,在Optional之前,我们只要使用StringUtils的工具类来判断传入的参数是否为空。现在我们可以使用 Optional 来替代它了。

Optional.of(Object object)

Optional.of(Object object):入参object不能为空,否则会抛出空指针异常。它最终调用的是Objects.requireNonNull方法。

1

2

3

4

5

public static T requireNonNull(T obj) {

if (obj == null)

throw new NullPointerException();

return obj;

}

Optional.ofNullable(Object object)

Optional.ofNullable(Object object):入参object可以为空,如果object不为空,就创建一个Optional实例;如果object为空就返回一个static fainal的Option对象,注意这里不会新建Option实例,而是使用一个static final的实例EMPTY,这里比较有意思的是泛型的问题,例如我需要两个Optional对象,类型分别是String和Integer。

1

2

Optional optionalStr = Optional.ofNullable(null);

Optional optionalInt = Optional.ofNullable(null);

类型不同又如何保证返回同一个对象呢?直接看ofNullable的源码,发现会调用empty方法:

1

2

3

4

5

public static Optional empty() {

@SuppressWarnings("unchecked")

Optional t = (Optional) EMPTY;

return t;

}

原来是通过强制转换实现的,再看EMPTY对象:

1

private static final Optional EMPTY = new Optional<>();

Optional.empty()

Optional.empty():就是上面分析Optional.ofNullable的时候用到的empty方法,直接返回一个static final的实例EMPTY;

Optional.of()方法的用法有点像断言,对象为空的时候代表着某种业务上不可接受的异常,需要尽早处理,并且业务拒绝执行,这种场景下可以使用Optional.of;

下面来一起看一个例子。

User 实体类代码如下:

1

2

3

4

5

6

7

8

9

10

11

public class User {

private int id;

private String name;

private int age;

public User(int id, String name, int age) {

this.id = id;

this.name = name;

this.age = age;

}

}

用Optional来避免空异常问题。

1

2

3

4

5

6

public User getStudent(int id){

User user = null;

Optional optional = Optional.ofNullable(user);

return optional.orElse(DEFAULT);

}

orElse方法可以指定一个value为空时的返回对象,如果这个对象需要调用方法才能获取(例如我们拿不到DEFAULT对象,要通过getDefault()方法才能拿到),这是就需要orElseGet方法来达到目的,如下:

1

2

3

4

5

6

7

8

9

private User getDefault(){

return DEFAULT;

}

public User getStudent(int id){

User user = null;

Optional optional = Optional.ofNullable(user);

return optional.orElseGet(() -> getDefault());

}

上述就是小编为大家分享的Java 8中java.util.Optional如何使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

对象 方法 实例 分析 业务 内容 就是 时候 类型 问题 不同 有意思 专业 两个 中小 代码 代表 例子 内容丰富 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳千丁互联网科技有限公司 软件开发过程模型适用 伊犁艾瑞普软件开发有限公司 新疆网络安全工作责任制 数据库原理与应用教程尹志宁郭晴主编 软件开发中最牛的岗位 驻马店网络技术联系方式 vps邮件服务器 db2数据库参数 阿椰阿城网络安全讲座 电信无线网络安全吗 甘肃互联天下网络技术有限公司 福建质量网络技术咨询怎么样 做软件开发的男生单身多吗 数据库sql登录密码忘记了 服务器安全证书是什么东西 服务器远程管理卡 价格 关于智慧消防的网络安全方案 软件开发首款会计科目 设计app界面放入数据库 华三服务器pcb板供货商 北京优美风尚网络技术 数据库期末考试山东科技大学 网络安全教育协议书 首届军营网络安全宣传周主题 芯片驱动软件开发 计算机网络技术的简单职业分析 服务器 矢量 守望先锋服务器活动 电信千兆服务器时延高能用啥解决
0