Java空指针检查实在看不下去了——转用Optional真香( 二 )

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真香】


推荐阅读