Objects类是Java中用于安全处理对象操作的工具类,提供isNull/nonNull判空、equals安全比较、requireNonNull校验、hashCode/toString/compare等静态方法,有效避免空指针异常。

Objects类是Java中专门用来处理对象操作的工具类,主要解决空指针异常(NullPointerException)问题,提供安全、简洁的对象比较、判空、哈希、字符串转换等静态方法。
Objects.isNull() 和 Objects.nonNull()
这是最常用的空值判断方法,语义清晰,可读性强,替代了繁琐的 obj == null 或 obj != null 写法。
- Objects.isNull(obj) 返回 true 当且仅当 obj 为 null
- Objects.nonNull(obj) 返回 true 当且仅当 obj 不为 null
- 常用于参数校验、Stream过滤、Optional条件判断等场景
- 例如:list.stream().filter(Objects::nonNull).collect(Collectors.toList())
Objects.equals() — 安全的对象相等判断
避免调用 obj1.equals(obj2) 时因 obj1 为 null 导致 NPE。该方法会先判空再比较,内部逻辑等价于:
(a == b) || (a != null && a.equals(b))
立即学习“Java免费学习笔记(深入)”;
- 支持任意两个引用类型比较,包括 null 与 null 比较返回 true
- 比手动写判空 + equals 更简洁可靠
- 注意:不适用于基本类型,基本类型应使用对应包装类或 Objects.equals(a, b)(自动装箱后比较)
Objects.requireNonNull() 系列 — 主动防御式空检查
用于在方法入口或关键节点强制校验非空,抛出明确的 NullPointerException,并支持自定义提示信息。
- requireNonNull(obj):为空则抛出默认 NPE
- requireNonNull(obj, "msg"):为空则抛出带消息的 NPE
- requireNonNull(obj, keySupplier):延迟计算错误消息,适合高开销字符串拼接场景
- 广泛用于构造函数、setter 方法、API 入参校验
其他实用方法
Objects 还提供了多个辅助功能,提升代码健壮性和可读性:
- hashCode(Object o):安全计算哈希码,null 返回 0
- hash(Object... values):计算多个对象组合的哈希值,自动处理 null
- toString(Object o):null 返回 "null" 字符串,避免 NPE
- toString(Object o, String nullDefault):指定 null 时的默认字符串
-
compare(T a, T b, Comparator
c) :安全比较,自动处理任一参数为 null 的情况(按 Comparator 规则)









