Optional使用 - yiyanglij/yiyanglij.github.io GitHub Wiki

三种构造方式

Optional.of(obj):要求传入对象不能为空

Optional.ofNullable(obj):传入对象可以为空

Optional.empty():空

Optional.ofNullable(orderInfo.getNotifyOrder()).ifPresent( val->{
                AssertExt.isTrue(!(orderInfo.getNotifyOrder()>=2), "已达最大发货提醒次数");
                orderInfo.setNotifyOrder(orderInfo.getNotifyOrder()+1).setNotifyOrderTime(LocalDateTime.now());
            }
    );

ifPresent,orElse,orElseGet使用

ifPresent:存在则做事

Optional.ofNullable(obj).ifPresent(Class a::Method b);
Optional.ofNullable(obj).ifPresent(a->{..});

orElse:存在则返回list,否则返回list1

Optional.ofNullable(list).orElse(list1);

orElseGet

Optional.ofNullable(list).orElseGet(A::method);
Optional.ofNullable(list).orElseGet(()->method());
  • 当else的值是现有变量时直接使用orElse直接返回该对象;
  • 而当else的值需要进一步计算才能获取到时使用orElseGet