我可以看到,@Nullable
和 @Nonnull
注释 可以有助于防止 NullPointerException
,但他们不传播很远。
@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
}
}
有没有办法使这些注释得到更严格的执行和/或进一步传播?