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青钢影卡蜜尔技能玩法解析?
- 野荷塘网站源码,野荷塘网站模板哪里可以买到?
