2014-01-27 5 views
8

Я хочу аннотировать полное имя класса с @Nullable -annotation (от Java Checker Framework), например:Java обзорное конструкция не может быть аннотированный с типом использования

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 

Как я могу аннотировать полностью квалифицированные имена классов?

ответ

9

Java language specification (draft for version 8) §8.3 определяет "UnannClassType", как

UnannClassType:
Identifier [TypeArguments]
UnannClassOrInterfaceType . {Annotation} Identifier [TypeArguments]

Таким образом, вам нужно заявление:

private transient [email protected] Query cached_results; 

Или в дополненной Java 7 составителя рамках клетчатой:

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

ПРИМЕЧАНИЕ: обычные компиляторы Java игнорируют /*@Nullable*/.

Смежные вопросы