【发布时间】:2018-10-21 08:28:38
【问题描述】:
public void test(@NonNull String input){
#1 log(input.length());
}
- 使用 lombok @NotNull 注释删除样板代码。但是,如果将 null 作为输入传递,它最终也会引发 NPE(默认情况下)。那么使用@NonNull 与在第 1 行抛出 NPE 有什么区别?
public void test(String input){
if(input ==null){
throw NPE;
}
log(input.length());
}
- 在类似的注释中,如果输入为 null 并且可以对其进行一些处理(例如,设置默认值或在为 null 时绕过块),那么显式检查 null 是有意义的。否则进行此检查是否有任何意义。不做空检查并让 NPE 被抛出会更好吗?如果这个问题的答案是,不要做空检查,那为什么 Lombok @NonNull 存在呢?
【问题讨论】:
-
如果你的应用程序支持空值,你应该检查空值,在这种情况下你对空对象不做任何事情。或者你可能不想支持空值,结果要么抛出或允许 NPE被抛出,因为你可能希望在特殊情况下做点什么。