Конструкцию области видимости Java нельзя аннотировать с использованием типа

Я хочу аннотировать полное имя класса с помощью аннотации @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

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


person Kasper van den Berg    schedule 27.01.2014    source источник


Ответы (1)


Спецификация языка Java (черновик для версии 8) §8.3 определяет «UnannClassType» как

UnannClassType:
Идентификатор [TypeArguments]
UnannClassOrInterfaceType . {Аннотация} Идентификатор [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*/.

person Kasper van den Berg    schedule 27.01.2014