Java 的 Objects 类是一个实用工具类,包含了一系列静态方法,用于处理对象。它位于 java.util 包中,自 Java 7 引入。Objects 类的主要目的是降低代码中的空指针异常(NullPointerException) 风险,同时提供一些非常实用的方法供我们使用。
Objects - 对null的判断
对象判空
在 Java 中,万物皆对象,对象的判空可以说无处不在。Objects 的 isNull 方法用于判断对象是否为空,而 nonNull 方法判断对象是否不为空。例如:- String str = "null";
- if (Objects.isNull(str)) {
- System.out.println("对象为空");
- }
- if (Objects.nonNull(str)) {
- System.out.println("对象不为空");
- }
复制代码 源码很简单,就是直接判断是否为 null:- public static boolean isNull(Object obj) {
- return obj == null;
- }
- public static boolean nonNull(Object obj) {
- return obj != null;
- }
复制代码 对象为空时抛异常requireNonNull
如果想在对象为空时,抛出空指针异常,可以使用 Objects 的 requireNonNull 方法。例如:- String str = "null";
- Objects.requireNonNull(str);
- Objects.requireNonNull(str, "参数不能为空");
- Objects.requireNonNull(str, () - > "参数不能为空");
复制代码 源码如下:- // 判断是否为空,空则返回异常,反之返回传入的参数
- public static < T > T requireNonNull(T obj) {
- if (obj == null)
- throw new NullPointerException();
- return obj;
- }
- // 与第一种一样,区别是可以传入一个自定义的提示
- public static < T > T requireNonNull(T obj, String message) {
- if (obj == null)
- throw new NullPointerException(message);
- return obj;
- }
- // 与第二种一样,区别是对自定义的提示做了一个判断,如果自定义的信息为null 则报错时就是默认的格式(和第一种一样,有点鸡肋了)
- public static < T > T requireNonNull(T obj, Supplier < String > messageSupplier) {
- if (obj == null)
- throw new NullPointerException(messageSupplier == null ?
- null : messageSupplier.get());
- return obj;
- }
复制代码 requireNonNullElse
源码- // 对传进来的数据进行判断,返回第一个非空值(obj)否则返回第二个非空值(defaultObj)
- // 可以看到里面调用了requireNoNull,若第二个也为空则报错,在错误后面提示defualtObj;
- public static < T > T requireNonNullElse(T obj, T defaultObj) {
- return (obj != null) ? obj : requireNonNull(defaultObj, "defaultObj");
- }
复制代码 用法与requireNonNull相似- String str = null;
- System.out.println(Objects.requireNonNullElse(str, "我不是null")); // 我不是null
复制代码 requireNonNullElseGet
源码:
[code]public static < T > T requireNonNullElseGet(T obj, Supplier |