java -非空判断

1. 非空判断的意义:

防止 NPE(空指针异常NullPointerException),是程序员的基本修养,编码时要记得加非空校验,在确保对象不为null时再进行下一步,这样可以避免NPE

2.非空判断如何做:

我们从一个简单的用例开始。在 Java 8 之前,任何访问对象方法或属性的调用都可能导致 NullPointerException:

String isocode = user.getAddress().getCountry().getIsocode().toUpperCase();

在这个小示例中,如果我们需要确保不触发异常,就得在访问每一个值之前对其进行明确地检查:

if (user != null) {
    Address address = user.getAddress();
    if (address != null) {
        Country country = address.getCountry();
        if (country != null) {
            String isocode = country.getIsocode();
            if (isocode != null) {
                isocode = isocode.toUpperCase();
            }
        }
    }
}

你看到了,这很容易就变得冗长,难以维护。

1) if判断
这个最直接,很多人应该都是这么用的:

    public static void main(String[] args) {
        Object obj=null;
        if(obj!=null)
        {
            System.out.println("执行接下来的代码");
        }
    }

2) Objects.requireNonNull(obj)

    public static void main(String[] args) {

        Object obj=null;
        Objects.requireNonNull(obj);

        // 如果传入的参数为null,则在抛出的异常中会显示为以下内容:
        // Exception in thread "main" java.lang.NullPointerException: 参数不能为空
        Objects.requireNonNull(obj,"参数不能为空");
        System.out.println("执行接下来的代码");
    }

3) Optional

Opitonal类就是Java8提供的非空判断,同时Optional的存在可以让代码更加简单,可读性跟高,代码写起来更高效。

如果对象即可能是 null 也可能是非 null,你就应该使用 ofNullable() 方法:

    public static void main(String[] args) {
        Object obj=null;
        // Optional.ofNullable - 允许传递为 null 参数
        // 以下代码正常输出
        System.out.println(Optional.ofNullable(obj).orElse("obj 为 null"));
        System.out.println("执行接下来的代码1");

        // Optional.of - 如果传递的参数是 null,抛出异常 NullPointerException
        // 以下代码会报异常
        System.out.println(Optional.of(obj).orElse("null null"));
        System.out.println("执行接下来的代码2");
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值