找回密码
 立即注册
首页 业界区 安全 深入探索java.util.Objects工具类

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

纪晴丽 2025-6-1 20:46:31
Java 的 Objects 类是一个实用工具类,包含了一系列静态方法,用于处理对象。它位于 java.util 包中,自 Java 7 引入。Objects 类的主要目的是降低代码中的空指针异常(NullPointerException) 风险,同时提供一些非常实用的方法供我们使用。
Objects - 对null的判断

对象判空

在 Java 中,万物皆对象,对象的判空可以说无处不在。Objects 的 isNull 方法用于判断对象是否为空,而 nonNull 方法判断对象是否不为空。例如:
  1. String str = "null";
  2. if (Objects.isNull(str)) {
  3.     System.out.println("对象为空");
  4. }
  5. if (Objects.nonNull(str)) {
  6.     System.out.println("对象不为空");
  7. }
复制代码
源码很简单,就是直接判断是否为 null:
  1. public static boolean isNull(Object obj) {
  2.     return obj == null;
  3. }
  4. public static boolean nonNull(Object obj) {
  5.     return obj != null;
  6. }
复制代码
对象为空时抛异常requireNonNull

如果想在对象为空时,抛出空指针异常,可以使用 Objects 的 requireNonNull 方法。例如:
  1. String str = "null";
  2. Objects.requireNonNull(str);
  3. Objects.requireNonNull(str, "参数不能为空");
  4. Objects.requireNonNull(str, () - > "参数不能为空");
复制代码
源码如下:
  1. // 判断是否为空,空则返回异常,反之返回传入的参数
  2. public static < T > T requireNonNull(T obj) {
  3.      if (obj == null)
  4.          throw new NullPointerException();
  5.      return obj;
  6. }
  7. // 与第一种一样,区别是可以传入一个自定义的提示
  8. public static < T > T requireNonNull(T obj, String message) {
  9.      if (obj == null)
  10.          throw new NullPointerException(message);
  11.      return obj;
  12. }
  13. // 与第二种一样,区别是对自定义的提示做了一个判断,如果自定义的信息为null 则报错时就是默认的格式(和第一种一样,有点鸡肋了)
  14. public static < T > T requireNonNull(T obj, Supplier < String > messageSupplier) {
  15.      if (obj == null)
  16.          throw new NullPointerException(messageSupplier == null ?
  17.              null : messageSupplier.get());
  18.      return obj;
  19. }
复制代码
requireNonNullElse

源码
  1. // 对传进来的数据进行判断,返回第一个非空值(obj)否则返回第二个非空值(defaultObj)
  2. // 可以看到里面调用了requireNoNull,若第二个也为空则报错,在错误后面提示defualtObj;
  3. public static < T > T requireNonNullElse(T obj, T defaultObj) {
  4.     return (obj != null) ? obj : requireNonNull(defaultObj, "defaultObj");
  5. }
复制代码
用法与requireNonNull相似
  1. String str = null;
  2. System.out.println(Objects.requireNonNullElse(str, "我不是null")); // 我不是null
复制代码
requireNonNullElseGet

源码:
[code]public static < T > T requireNonNullElseGet(T obj, Supplier
您需要登录后才可以回帖 登录 | 立即注册