objects.requirenonnullelse用于在对象为null时返回非null默认值,否则抛出nullpointerexception;要求defaultobj必须非null且类型兼容,适用于轻量默认值场景。

Objects.requireNonNullElse 是 Java 8 引入的工具方法,用于在对象为 null 时返回指定的默认值,同时**确保该默认值本身不为 null**(否则抛出 NullPointerException)。
核心用法:提供非 null 的备用对象
该方法签名是:
public static它会先检查 obj 是否为 null:
- 如果不为
null,直接返回obj; - 如果为
null,则返回defaultObj; - 但前提是
defaultObj也必须非null,否则立即抛出NullPointerException。
正确设置默认备用对象的要点
要成功使用 requireNonNullElse,关键在于:**默认值不能是 null,且类型需与主对象兼容**。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- ✅ 推荐用字面量、已初始化的对象或静态常量作默认值,例如:
"unknown"、new ArrayList()、LocalDateTime.now(); - ❌ 避免传入可能为
null的变量作为defaultObj,比如另一个未校验的参数; - ⚠️ 注意泛型推断:若两个参数类型不一致(如
String和Object),编译器可能推断为更宽泛的上界,导致意外行为;建议显式保持类型一致。
对比其他类似方法,避免误用
它和 Objects.requireNonNullElseGet 不同——后者接受 Supplier,支持延迟计算默认值,适合创建开销大或有副作用的对象。
- 用
requireNonNullElse:默认值简单、轻量、已就绪(如字符串、枚举、空集合); - 用
requireNonNullElseGet:默认值需按需构造(如 new HashMap()、远程 fallback 调用); - 不用
Objects.toString(obj, "def")或三元运算符:它们不做强制非 null 校验,语义不同。
实用示例
假设处理用户姓名,希望空时返回 "Anonymous":
String name = Objects.requireNonNullElse(user.getName(), "Anonymous");再如处理可能为空的配置列表:
List注意:Collections.emptyList() 返回不可变空列表,非 null 且安全。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










