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

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

Решение

Спецификация языка 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*/ ,

Другие вопросы по тегам