Java作用域结构不能使用类型使用进行注释

时间:2014-01-27 16:19:51

标签: java annotations java-8 checker-framework

我想使用@Nullable注释(来自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

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

1 个答案:

答案 0 :(得分:10)

Java language specification (draft for version 8)§8.3将“UnannClassType”指定为

  

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

因此,您需要声明:

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

或者在checker框架的扩充java 7编译器中:

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

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