千家信息网

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

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这期内容当中小编将会给大家带来有关Java 8中java.util.Optional如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Optional 主要用来
千家信息网最后更新 2025年01月24日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安全错误 数据库的锁怎样保障安全 网易手机mc服务器能装mod吗 哈尔滨市公安网络安全支队 数据库名和数据库用户名 数据库系统管理的意义 学校网络安全宣传周讲话稿 java手游服务器 老用户云服务器续费费用 桂林电子科技大学网络安全怎么样 天正v5.0服务器为空 软件开发需要专利费吗 sql数据库前端提示语句 单片机对讲机软件开发费用 数据库驱动jar怎么用 河南点趣网络技术有限公司 服务器一体机 江苏软件开发设施品质保障 易利购系统软件开发 电脑邮箱服务器设置教程 互联网科技属于科学吗 中央网络安全信息委员会主任 苹果手机网页打不开找不到服务器是什么问题 四川玩黑色玫瑰服务器 数据库多语言设计 甘肃智慧景区软件开发公司 我用公式算的数据库 网络安全ppt第一ppt网 计算机网络安全答辩演讲稿 文件dsn数据库MySQL 关于网络安全与文明的问答 华为计划投资网络安全
0