System.out.println("optional2的flatMap前的值:"+optional2);
result2 =optional2.flatMap(t->Optional.ofNullable(t.getAge()));
System.out.println("optional2的flatMap后的值:"+result2);
}
public class User {
String name;
Integer age;
public User(String name,Integer age){
this.name = name;
this.age=age;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;

文章插图
3 应用实例3.1 错误用法
- 由于Optional并没有实现Serializable接口,所以不能作为类的属性 。
- 不要把Optional作为方法的参数 。
- 把if(x!=null)直接换成Optional.ofNullable(x).isPresent(),这样有过度编码的嫌疑 。
- 直接使用Optional.get()的返回值进行操作 , String result =Optional.ofNullable(null).get().toString();这样还是会抛出异常的 。
if(atest!=null){
Btest btest =atest.getBtest();
if(btest!=null){
Ctest ctest = btest.getCtest();
if (ctest != null) {
name =ctest.getName();
}
}
}
name = Optional.ofNullable(atest).map(t->t.getBtest()).map(t->t.getCtest()).map(t->t.getName()).orElse("默认值");
4 总结通过对Optional源码解析和用例测试代码的运行结果 , 可以看出使用Optional可以优化null值判断代码 , 让代码变得更加优雅和整洁 。
自猿其说Tech-JDL京东物流技术与数据智能部作者:陈昌浩
经验总结扩展阅读
- Go 源码解读|如何用好 errors 库的 errors.Is 与 errors.As() 方法
- Optional 常用方法总结
- 走到尽头结局解析?
- 西西里的美丽传说解析?
- LOL血港开膛手派克技能解析及玩法技巧?
- 王者荣耀孙策技能解析?
- 英魂之刃李探花出装打法解析?
- 王者荣耀中钟馗技能解析以及如何连招?
- 英雄联盟lol青钢影卡蜜尔技能玩法解析?
- 野荷塘网站源码,野荷塘网站模板哪里可以买到?