public API 的所有输入参数是否都应为 null 检查的规则?

Is it a rule that all the input parameters should be null checked for public API's?

我有一个 API 公开给多个用户。

规则是我应该检查 API 中 null 的所有输入参数吗?

或者开发者有责任不发送 null 个对象?

或者 API 设计者的职责只是在 Java 文档中提到不要发送 null 对象?

这是什么任务?

获取null值不只是因为编程习惯不好,也有可能是网速慢或者通信依赖方法问题。

因此,在所有这些场景之间,我们不能说特定的 API 将不再获得空值。

这就是为什么我们需要先检查空值并防止应用程序而不是由此产生的错误并保存工作路径。

关于 return 空

基于事实的答案是:尽可能避免 return空值!

Java8介绍Optional;其他策略是 return 例如空集合(而不是空集合)。

返回 null 始终是 NullPointerException 的第一步 - 因此您要避免它。但是,当然,这不是免费的。有时候你需要多多思考才能找到一个好的解决方案。

关于空输入参数

检查输入...这实际上取决于您和您的用户表达的要求。

我的 "personal" 在这里:使用 Objects.requireNonNull() 立即 检查所有传入参数,当它们应该是非空时。并在您的 javadoc 中明确记录:

@throws NullPointerException if any of the provided arguments is null

你看,当你的代码调用任何参数的方法时,代码无论如何都会抛出异常。因此,更好 提前检查 - 而不是让您的代码在抛出之前做(很多)事情。

换句话说:确保您的代码 "fails" 尽可能快!