Встроенные аннотации дают синтаксические ошибки


Мне нравятся новые проверки API Lint ADT rev 17, но новая проверка правильности API поставила меня в тупик. У меня есть следующая строка кода:

listView.setOverScrollMode(OVER_SCROLL_NEVER);

Линт сообщает по этой строке:

Вызов требует API уровня 9 (текущий min равен 4)

Согласно документации , я должен просто иметь возможность добавить аннотацию над строкой, например:

@TargetApi(9)
listView.setOverScrollMode(OVER_SCROLL_NEVER);

Это, однако, дает синтаксическую ошибку в Java 1.6:

Синтаксическая ошибка ВКЛ. токен (ы), неуместная конструкция(ы)

1 11

1 ответ:

Это запрещено в Java (до тех пор, пока/если JSR 308 не будет добавлен); вы можете только аннотировать классы, методы, поля, параметры и объявления переменных. Это последнее, что показано в документах. Однако для проверок на основе байт-кода, таких как проверка api, вам может потребоваться поместить его в метод или класс (или Анонимный/внутренний класс). Добавление аннотации quickfix для этих предупреждений в lint должно делать правильные вещи.