加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Objects.requireNonNull(T obj)而不是null检查并手动抛

发布时间:2020-12-14 16:37:41 所属栏目:Java 来源:网络整理
导读:每当我检查一个方法的给定参数是否不为null时,如果null检查失败,我用来写一个空检查并抛出一个IllegalArgumentException: if (user == null) { throw new IllegalArgumentException("User can't be null."); } 然而,通过读取一些Java 8类(如ArrayList)的源
每当我检查一个方法的给定参数是否不为null时,如果null检查失败,我用来写一个空检查并抛出一个IllegalArgumentException:
if (user == null) {
        throw new IllegalArgumentException("User can't be null.");
    }

然而,通过读取一些Java 8类(如ArrayList)的源代码,我发现Oracle正在使用Objects.requireNonNull来检查一个空值的参数,然后如果测试失败,则会抛出NullPointerException异常.

这样,早期的代码片段应该采用这种方法:

Objects.requireNonNull(user,"User can't be null.");

更小,更可读.

假设我控制了系统的整个异常处理(即使我不应该,有时它是处理这些未经检查的异常的业务的一部分),我应该用NullPointerException替换我的IllegalArgumentExceptions并使用Objects.requireNonNull而不是写我自己的null检查和异常抛出?

解决方法

使用Objects.requireNonNull(c)是一种非常优雅的方式来检查元素是否不为空.但是有一个有趣的讨论是关于选择NullPointerException还是IllegalArgumentException – >因此抛出NullPointerException是表示引用为空的java方式.

否则,您可以使用自己的方法requireNotNull().很简单 :

public static <T> T requireNonNull(T obj) {
        if (obj == null)
            throw new NullPointerException();
        return obj;
    }

并且您可以通过IllegalArgumentException更改异常NullPointerException.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读