Eclipse给我警告“可能的空指针访问:变量ann在此位置可能为空”:

SomeAnnotation ann = type.getAnnotation( SomeAnnotation.class );
Preconditions.checkNotNull( ann, "Missing annotation on %s", type );

for( String value : ann.value() ) { // <-- warning happens here
}

我正在使用Eclipse 3.7和Guava。有办法摆脱这种警告吗?

我可以使用SuppressWarnings("null"),但是我必须将其附加到我认为不是一个好主意的方法上。

最佳答案

Eclipse e4对编译器中的空检查和资源跟踪提供了更好的支持。

另一个解决方案是编写自己的checkNotNull版本,如下所示:

@Nonnull
public static <T> T checkNotNull(@Nullable T reference) {
  if (reference == null) {
    throw new NullPointerException();
  }
  return reference;
}

现在您可以使用这种方法:
SomeAnnotation ann = Preconditions.checkNotNull( type.getAnnotation( SomeAnnotation.class ) );

(我省略了带有错误消息的checkNotNull()版本;它们以相同的方式工作)。

我想知道为什么番石榴不这样做,因为他们已经在其他地方使用了这些注释。

07-24 15:45