java增效系列—jdk8新特性之Optional优雅处理null值情况

Optional

三种创建optional对象方式

public void test01(){
    // 1.创建空optional
    Optional.empty();

    // 2.使用非null值创建optional对象,使用null会报错
    Optional.of("test");

    // 3.可以使用任意值创建
    Optional.ofNullable(null);
}

正常引用和引用缺失情况下的使用

public void test01() {
    Optional<Object> optional = Optional.of("I love java");
    /**
      * 如果 optional 不为空才会执行 ifPresent 中的方法
      * 类似的方法:map filter flatMap
      */
    optional.ifPresent(System.out::println);


    //当optional引用缺失时,赋值给一个默认值
    optional.orElse("引用缺失");
    optional.orElseGet(() -> {
        // TODO 业务处理代码
        return "自定义引用缺失";
    });
    optional.orElseThrow(() -> {
        throw new RuntimeException("当引用缺少时,自定义抛出一个异常");
    });
}

编码实战

观察下面的代码,很简单遍历传递过来的集合并打印。

问题:如果传递过来的是 null 改如何处理,可以使用 if判断,但结合 steam 有更好的方式,使用 optionsl

public static void testFor(List<String> list) {
    list.forEach(System.out::println);
}

改进后代码

public static void testFor(List<String> list) {
    // Stream::empty 代表创建一个空流,可以理解成 () -> Stream.empty()
    Optional.ofNullable(list).map(List::stream).orElseGet(Stream::empty).forEach(System.out::print);
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CV大魔王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值