Tag:

如何更有效地使用@Nullable和@Nonnull注释

我可以看到@Nullable和@Nonnull注释有助于防止NullPointerException但是它们不会传播很远。 这些注释的有效性在一层间接后完全消失,所以如果只添加一些注释,它们就不会传播很远。 由于这些注释没有被很好地执行,所以存在假设用@Nonnull标记的值不为空并且因此不执行空检查的危险。 下面的代码会使用@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 […]