当前位置: 首页 > 工具软件 > Optional > 使用案例 >

Optional判断集合

束新
2023-12-01

集合判断还是用CollectionUtils,Optional有潜在的风险

public static void main(String[] args) {
        //null不执行
        List<User> list  = null;
        Optional.ofNullable(list).ifPresent(ll -> System.out.println("数据1:"+ll.toString()));

        //不为null,但是这个用法需要分场景
        //size=0的,可以理解为找数据没有找到符合条件的,这个size=0承载着业务含义。
        //但是有没有可能给上有带来NPE呢?或者业务走向不符合预期
        list = new ArrayList<>();
        Optional.ofNullable(list).ifPresent(ll -> System.out.println("数据2:"+ll.toString()));

        //这里不符合预期
        Optional.ofNullable(list).ifPresent(ll -> {
            System.out.println("操作啦啦啦啦");//可能不符合预期,如果用!CollectionUtils.isEmpty(list)判断,这里不会执行
            //!CollectionUtils.isEmpty(list)会规避null和[],而这里无法规避[]
            ll.forEach(l-> System.out.println("遍历:"+l.toString()));
        });

        User user = new User();
        user.setCalcField("name");
        list.add(user);
        Optional.ofNullable(list).ifPresent(ll -> System.out.println("数据3:"+ll.toString()));
    }

结果

数据2:[]
操作啦啦啦啦
数据3:[User(calcField=name, definitionList=null)]
 类似资料: