前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Optional JDK8 判空新写法

Optional JDK8 判空新写法

作者头像
收心
发布2024-03-15 09:03:44
750
发布2024-03-15 09:03:44
举报
文章被收录于专栏:Java实战博客Java实战博客

Java 中的 Optional 类是在 Java 8 中引入的一个重要类,它的作用是帮助开发者更好地处理可能为 null 的值,避免空指针异常,并且提高代码的可读性。

以下是 Optional 类的一些作用:

  1. 避免空指针异常:通过使用 Optional,可以更加明确地表达一个值可能为 null 的情况,而不是在代码中直接使用可能为 null 的引用。这有助于避免空指针异常,因为 Optional 会强制开发者显式地处理可能为 null 的情况。
  2. 更清晰的 API:使用 Optional 作为方法的返回类型,可以清晰地表达该方法可能返回空值。这样的 API 更易于理解和使用,因为调用者知道需要处理可能为空的情况。
  3. 强制进行空值检查:通过使用 Optional,可以强制开发者在使用值之前进行空值检查,从而提高代码的稳健性。
  4. 链式调用:Optional 提供了一系列的方法,可以方便地进行链式调用,比如 mapflatMapfilter 等,这些方法可以帮助开发者在处理 Optional 对象时更加灵活地进行操作。
  5. 更好的语义:将可能为空的情况显式地表达为 Optional 类型,有助于代码的可读性和维护性,因为它明确地传达了某个值可能不存在的语义。

虽然 Optional 类在某些情况下可能会增加一些额外的代码复杂性,但它在提高代码的可靠性和可读性方面具有重要作用,特别是在处理可能为 null 的情况时。

演示Optional用法

代码语言:javascript
复制
/**
 * @author : zanglikun
 * @date : 2/22/24 16:36
 * @desc : Copyright ? zanglikun.com
 */
public class TestOptional {
    @Data
    @AllArgsConstructor
    static class A {
        private B b;
    }

    @Data
    @AllArgsConstructor
    static class B {
        private C c;
    }

    @Data
    @AllArgsConstructor
    static class C {
        private String word;
    }

    public static void main(String[] args) {
        A a = new A(new B(new C("我是C的字符串")));
        // 如果我要去拿C的字符串如何拿?
        if (Objects.nonNull(a)) {
            if (Objects.nonNull(a.getB())) {
                if (Objects.nonNull(a.getB().getC())) {
                    String word = a.getB().getC().getWord();
                    System.out.println(word);
                }
            }
        }

        // 新式写法
        Optional<String> optional = Optional.of(a)
                .map(A::getB)
                .map(B::getC)
                .map(C::getWord);
        if (optional.isPresent()) {
            System.out.println(optional.get());
        }
    }
} 
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 演示Optional用法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com