纪晴丽 发表于 2025-6-1 20:46:31

深入探索java.util.Objects工具类

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")); // 我不是nullrequireNonNullElseGet

源码:
public static < T > T requireNonNullElseGet(T obj, Supplier
页: [1]
查看完整版本: 深入探索java.util.Objects工具类