我可以看到,@Nullable
注释@Nonnull
可能有助于防止NullPointerException
s 但它们不会传播很远。
- 这些注释的有效性在一级间接后完全下降,所以如果你只添加一些,它们不会传播很远。
- 由于这些注释没有得到很好的执行,因此存在假设标记为 的值
@Nonnull
不是 null 并因此不执行 null 检查的危险。
下面的代码导致标记为的参数@Nonnull
没有null
引起任何投诉。它在运行时抛出一个NullPointerException
。
public class Clazz {
public static void main(String[] args){
Clazz clazz = new Clazz();
// this line raises a complaint with the IDE (IntelliJ 11)
clazz.directPathToA(null);
// this line does not
clazz.indirectPathToA(null);
}
public void indirectPathToA(Integer y){
directPathToA(y);
}
public void directPathToA(@Nonnull Integer x){
x.toString(); // do stuff to x
}
}
有没有办法让这些注释更严格地执行和/或进一步传播?