Kas*_*erg 9 java annotations java-8 checker-framework
我想用@Nullable-annotation(来自Java Checker Framework)注释一个完全限定的类名,例如:
class Demo {
private transient @Nullable org.apache.lucene.search.Query cached_results;
// ...
}
Run Code Online (Sandbox Code Playgroud)
但是这会导致错误:
scoping construct cannot be annotated with type-use annotation: @checkers.nullness.quals.Nullable
Run Code Online (Sandbox Code Playgroud)
如何注释完全限定的类名?
Kas*_*erg 14
在Java语言规范(草案第8版) §8.3指定一个"UnannClassType"为
UnannClassType:
Identifier [TypeArguments]
UnannClassOrInterfaceType.{Annotation}标识符[TypeArguments]
因此,您需要声明:
private transient org.apache.lucene.search.@Nullable Query cached_results;
Run Code Online (Sandbox Code Playgroud)
或者在checker框架的增强java 7编译器中:
private transient org.apache.lucene.search./*@Nullable*/ Query cached_results;
Run Code Online (Sandbox Code Playgroud)
注意:普通的Java编译器会忽略/*@Nullable*/.