Objects.requireNonNull(param)用于参数非空校验,为null时立即抛NullPointerException;支持自定义提示消息、链式校验多个参数,仅作断言不改变参数值。

直接在方法开头调用 Objects.requireNonNull(param),就能在参数为 null 时立即抛出 NullPointerException,从而避免后续空指针风险。
基础用法:单参数校验
最常用的方式是传入待检查的引用参数。如果为 null,立刻抛出默认异常(含堆栈信息):
public void processUser(User user) {
Objects.requireNonNull(user); // 若 user == null,抛 NPE
System.out.println(user.getName());
}
带提示消息:让错误更清晰
第二个字符串参数会作为异常的详细信息,便于定位问题来源:
public void updateUser(User user, String operation) {
Objects.requireNonNull(user, "user must not be null");
Objects.requireNonNull(operation, "operation must not be null");
// 后续逻辑安全执行
}
链式校验多个参数
可连续调用多次 requireNonNull,按顺序检查每个参数。任一为 null 都会中断执行:
- 推荐在方法最开始集中校验,逻辑清晰
- 不要依赖后续条件判断来“兜底”,应尽早失败
- 若需统一处理,也可封装成工具方法或使用注解(如
@NonNull+ 编译期检查)
注意点:它不改变参数本身
requireNonNull 只做检查并抛异常,**不会**返回非空值或做任何转换。它不是“赋默认值”或“自动初始化”的工具:
- ❌ 错误理解:
user = Objects.requireNonNull(user, "...");—— 虽然语法合法,但纯属冗余,因为返回的就是原引用 - ✅ 正确姿势:只用作断言,不用于赋值或修复
- 若需要默认值,请用
Objects.requireNonNullElse(Java 9+)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











