9
如何更有效地使用@Nullable和@Nonnull注释?
我可以看到@Nullable和@Nonnull注释可能有助于防止NullPointerExceptions,但它们不会传播太远。 这些注释的有效性在一个间接级别之后会完全下降,因此,如果仅添加一些注释,它们的传播就不会太远。 由于这些注释的执行不正确,因此存在以下危险:假定标有的值@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(); // …