我注意到 Oracle JDK 中的许多 Java 8 方法使用 Objects.requireNonNull()
,如果给定对象(参数)是 null
,则内部抛出 NullPointerException
public static <T> T requireNonNull(T obj) {
if (obj == null)
throw new NullPointerException();
return obj;
}
但是,如果取消引用 NullPointerException
null
对象,无论如何都会抛出 --- 。那么,为什么要进行这种额外的空值检查并抛出 NullPointerException
?
一个明显的答案(或好处)是它使代码更具可读性,我同意。我很想知道在方法开始时使用 Objects.requireNonNull()
的任何其他原因。
原文由 user4686046 发布,翻译遵循 CC BY-SA 4.0 许可协议
因为您可以通过这样做使事情变得 明确。喜欢:
或更短:
现在你 知道 了:
new()
将其与:您今天创建一个 Foo 对象, 明天 您调用一个使用该字段并抛出的方法。最有可能的是,您明天将不知道为什么 昨天 将引用传递给构造函数时为空!
换句话说:通过显式使用此方法检查 传入 引用,您可以 控制 引发异常的时间点。大多数时候,你想尽快 _失败_!
主要优点是:
bar
不为空 - 因此您不需要任何if (bar == null)
检查其他地方!