首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >别再手写 null 判断了!Apache Commons Lang 的 ObjectUtils 全解析

别再手写 null 判断了!Apache Commons Lang 的 ObjectUtils 全解析

作者头像
DevLlama
发布2026-06-01 20:27:35
发布2026-06-01 20:27:35
150
举报

在日常开发中,我们对与对象null判断,大多数都是 obj != null来判断对象非空,然而在Apache Commons Lang这个类库中,包含着这样一个类ObjectUtils,平时我们大概也就忽略了,基本只会使用StringUtils这个类以外,其他好用的类都没有使用过。

ObjectUtils 核心特性:Null-Safe 对象操作

1.空安全操作:所有方法都处理了null输入,通常不会抛出异常。 2.工具类方法集合:提供常用的对象操作工具。

一.空值判断

  • allNotNull():判断数组中所有元素均不为 null
  • allNull():判断数组中所有元素均为 null
  • anyNotNull():判断数组中存在不为 null 的元素
  • anyNull():判断数组中存在为 null 的元素
  • isEmpty():判断对象为 null 或空
  • isNotEmpty():判断对象不为 null 且非空

二、空安全默认值处理

  • defaultIfNull():对象为 null 时返回默认值(已废弃)
  • firstNonNull():返回数组中第一个非 null
  • getFirstNonNull():依次执行多个 Supplier,返回首个非 null 结果
  • getIfNull(Supplier):对象非空则返回自身,否则返回 Supplier 结果
  • getIfNull(default):对象非空则返回自身,否则返回指定默认值

三、对象克隆

  • clone():克隆对象
  • cloneIfPossible():可克隆则克隆,不可则返回原对象

四、对象比较

  • compare():空安全比较两个可比较对象
  • compareWithNullGreater():空安全比较,可指定 null 是否大于非 null
  • equals():空安全判断对象相等(已废弃)
  • notEqual():空安全判断对象不相等

五、哈希码相关

  • hashCode():获取哈希码,null 返回 0(已废弃)
  • hashCodeHex():哈希码的十六进制字符串
  • hashCodeMulti():多对象组合哈希码(已废弃)
  • identityHashCodeHex():对象标识哈希码的十六进制字符串

六、toString 格式化

  • toString():空安全转字符串,null 返回空串
  • toStringWithSupplier()null 时使用 Supplier 提供默认字符串
  • toStringWithNullStr()null 时返回指定字符串(已废弃)

七、标识 toString(对象唯一标识)

  • identityToStringObject():获取对象标识字符串,null 返回 null
  • identityToStringAppendable():追加标识字符串到 Appendable
  • identityToStringStrBuilder():追加到 StrBuilder(已废弃)
  • identityToStringStringBuffer():追加到 StringBuffer
  • identityToStringStringBuilder():追加到 StringBuilder

八、常量防编译器内联

  • CONSTBoolean/CONSTByte/CONSTChar/CONSTDouble/CONSTFloat/CONSTInt/CONSTLong/CONSTShort/CONSTObject:返回对应类型值,防止编译器内联
  • CONST_BYTE/CONST_SHORT:类型转换并返回,防止内联

九、最值、中位数、众数

  • max():空安全获取多个对象最大值
  • min():空安全获取多个对象最小值
  • median():获取中位数
  • mode():获取出现频率最高的元素

十、数组与类型判断

  • isArray():判断对象是否为数组

十一、参数校验

  • requireNonEmpty():校验对象非 null 且非空
  • requireNonEmptyWithMessage():同上,支持自定义异常信息

十二、Class 信息获取

  • getClass():泛型方式获取对象 Class

核心总结

  1. 1. 核心能力:空值安全处理
  2. 2. 主体功能:对象比较、克隆、哈希、字符串化、标识打印
  3. 3. 工具扩展:最值查找、参数校验、数组判断、防内联常量
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevLlama 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ObjectUtils 核心特性:Null-Safe 对象操作
    • 一.空值判断
    • 二、空安全默认值处理
    • 三、对象克隆
    • 四、对象比较
    • 五、哈希码相关
    • 六、toString 格式化
    • 七、标识 toString(对象唯一标识)
    • 八、常量防编译器内联
    • 九、最值、中位数、众数
    • 十、数组与类型判断
    • 十一、参数校验
    • 十二、Class 信息获取
  • 核心总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档