java8 optional 类的运用

常用方法:
    public static <T> Optional<T> of(T value);// 为Optional设值,值为空抛异常
    public static <T> Optional<T> ofNullable(T value) ;// 为Optional设值,值为空不抛异常
    public T get();// 如果Optional中有值,则返回值,否则抛出 NoSuchElementException 
    public boolean isPresent() ; // 如果存在值,返回 true,否则返回 false 
    public void ifPresent(Consumer<? super T> consumer) ;// 如果存在值,则使用该值调用指定的消费者,否则不执行任何操作。
    public T orElse(T other) ; //如果创建的Optional中有值存在,则返回此值,否则返回一个默认值
    public T orElseGet(Supplier<? extends T> other) ; //如果Optional中有值存在,则返回此值,否则返回一个由Supplier接口生成的值

 

实际应用:

 

    @Test
    public void test1(){
        Optional<User> userOptional = Optional.of(new User("张三","123456",12));

        // 一般使用,不推荐
        if (userOptional.isPresent()) {
            System.out.println(userOptional.get());
        }
        // 推荐函数式写法
        userOptional.ifPresent(u-> System.out.println(u));



        // school 与 user 是一对多的关系,school 里面有一个user的集合
        // 若school里面的user集合不为null,输出该集合,否则输出一个空集合


        User user1 = new User("张三","123456",12);
        User user2 = new User("李四","123456",12);
        List<User> userList = Arrays.asList(user1,user2);

        School school = new School();
        school.setUserList(userList);   //此行可注释,使list为null


        //一般写法
        List<User> list = school.getUserList();
        if (list!=null) {
            System.out.println(list);
        }else{
            System.out.println(new ArrayList<User>());
        }

        // 函数式写法
        Optional<School> optionalSchool = Optional.ofNullable(school);
        System.out.println(optionalSchool.map(u -> u.getUserList()).orElse(Collections.emptyList()));

    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值