【发布时间】:2016-01-06 00:20:48
【问题描述】:
当我有一个潜在的空输入时……最好总是检查它:
public void doSomething(String str) {
if (str == null)
throw new NullPointerException();
processData(str);
}
或者传递无效数据,等待“processData()”抛出nullPointerException:
public void doSomething(String str) {
processData(str);
}
【问题讨论】:
-
这取决于 - 如果 processData 是一个内部函数(不能作为公共接口访问),它可能不会进行空指针检查。即使有,也取决于您在 processData 之前是否有需要运行的代码。
-
我认为,需要先检查,如果不是 NULL 则继续。这样将来任何进一步的修改都会发生在其他模块上,不会受到空指针的影响。
-
还有一些非空参数的注解。但趋势似乎通常假设非空。在 java 8 中,使用
Optional<String>表示可能缺失的值。所以一个 javadoc 注释就足够了。 -
这对我来说似乎不是重复的。