ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Optional类详解
[打印本页]
作者:
慢吞云雾缓吐愁
时间:
2022-8-22 06:13
标题:
Optional类详解
转自:
http://www.java265.com/JavaCourse/202206/3817.html
下文笔者讲述jdk8中Optional关键字的功能简介说明,如下所示:
Optional关键字的功能
Optional类的功能:
1.用于处理空指针异常(NullPointerException)的问题
2.Optional是一个包装类,它可包装的对象可以是空,也可以是一个存在的对象
复制代码
例: 常见的空指针异常判断示例
String pId = user.getInfo().getId().toLowerCase();
//为了不产生空指针异常,我们需做以下的判断
if (user != null) {
Info info = user.getInfo();
if (info != null) {
Id pid = info.getId();
if (pid != null) {
pid = pid.toLowerCase();
}
}
}
复制代码
那么,我们发现以上的代码非常的冗余,此时我们就可以使用Optional进行改写,例
String pId = Optional.ofNullable(user)
.flatMap(u -> u.getInfo())
.flatMap(a -> a.getId())
.map(c -> c.toLowerCase())
.orElse("default");
复制代码
从以上Optional改写上,我们可以看出Optional写出的代码,非常的优雅
那么Optional到底如何使用呢?下文笔者将一一道来,如下所示
创建Optional实例
Optional<User> emptyOpt = Optional.empty();
以上将创建一个null optional对象示例
复制代码
使用of()和ofNullable()方法创建Optional
注意事项:
of()方法,当传入一个null值时,则会包NPE(NullPointerException)异常
复制代码
例:
//使用of方法创建的对象,可能报NPE异常
Optional<User> opt = Optional.of(user);
//此时我们需采用 ofNullable()方法创建Optional对象
//才能避免报异常
Optional<User> opt = Optional.ofNullable(user);
复制代码
访问Optional对象的值
String name = "java265.com";
Optional<String> opt = Optional.ofNullable(name);
assertEquals("java265.com", opt.get());
注意事项:
以上的get方法,也可能报NPE异常,此时我们需使用isPresent()进行相应的判断
User user = new User("java265.com", "8888");
Optional<User> opt = Optional.ofNullable(user);
assertTrue(opt.isPresent());
assertEquals(user.getName(), opt.get().getName());
复制代码
optional返回默认值
Optional类返回默认值,可使用orElse()方法或orElseGet方法
此方法的功能为当Optional为null时,返回默认值
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4