flagMapUser user = new User("小明",16,new Address());String s1 = Optional.ofNullable(user).flatMap(s -> s.getName()).get();
两个函数都可以实现值的转换,两者的区别是二者的入参不同 。以上面的flagMap的示例代码为例,我们需要在User类中重写一下getName方法,使其返回Optional对象 。
过滤(筛?。┖??篺ilter该函数的作用是,判断Optional中的值是否满足指定条件,若满足则返回,否则返回一个EMPTY对象 。
User user = new User("小明",16,new Address());User result = Optional.ofNullable(user).filter(s -> s.getName().equals("小红")).orElseGet(() ->new User("小蓝",10));System.out.println(result); // user{address=null, name='小蓝', age=10}
这里会筛选出满足姓名为小红的User对象,若不满足则新建一个姓名为小蓝的User对象 。
最后需要注意,使用Optonal这种链式编程虽然简洁化了程序代码 , 但是逻辑性不是很明显,相对来说会损失一定的代码可读性 , 具体的使用需要开发人员在实际场景中进行权衡 。个人建议哪怕是自己不经常使用也要尽量掌握,避免出现阅读源码的时候显得尴尬 。
【Java空指针检查实在看不下去了——转用Optional真香】
推荐阅读
- 使用 Java 枚举和自定义数据类型
- Kotlin 将取代 Java,跻身 Top 10?| TIOBE 11 月榜单发布
- Java服务端程序“假死”怎么办?
- 腾讯认证空间怎么弄,qq腾讯认证名片怎么弄
- 什么手机可以隔空投送,华为手机可以隔空投送苹果手机
- 不是黄钻怎么装扮空间 不用黄钻怎么装扮空间
- 认证空间怎么弄 官方认证空间怎么弄的
- 墨兰根都空了还有救吗 墨兰根都空了能全剪掉吗
- 空调专用阀门图解 空调管路几种阀门知识图
- 室内装饰花卉的分布原则 花卉装饰分类:根据室内外空间分类