12

我想用@Nullable-annotation(来自Java Checker Framework)注释一个完全限定的类名,例如:

class Demo {
    private transient @Nullable org.apache.lucene.search.Query cached_results;

    // ...
}

但是,这会导致错误:

scoping construct cannot be annotated with type-use annotation: @checkers.nullness.quals.Nullable

如何注释完全限定的类名?

4

1 回答 1

16

Java 语言规范(版本 8 草案) §8.3将“UnannClassType”指定为

UnannClassType:
标识符 [TypeArguments]
UnannClassOrInterfaceType 。{Annotation} 标识符 [TypeArguments]

因此,您需要声明:

private transient org.apache.lucene.search.@Nullable Query cached_results;

或者在检查器框架的增强型 java 7 编译器中:

private transient org.apache.lucene.search./*@Nullable*/ Query cached_results;

注意:普通的 Java 编译器会忽略/*@Nullable*/.

于 2014-01-27T16:19:51.150 回答