2012-03-22 4 views
11

Я люблю новые проверки API Lint ADT rev 17, но новая проверка правильности API меня насторожила. У меня есть следующие строки кода:Внутристрочные аннотации дают синтаксические ошибки

listView.setOverScrollMode(OVER_SCROLL_NEVER); 

Lint сообщает в этой строке:

вызовов требует уровень API 9 (ток мин составляет 4)

According to the documentation, я должен просто можно добавить аннотацию над линией, например:

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

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

Синтаксическая ошибка в знак (ы), неуместной конструкции (ов)

+0

Это можно довольно легко устранить, извлекая рассматриваемую линию (строки) в функцию и добавив туда аннотацию, но в документации конкретно указано, что аннотация работает в режиме. –

ответ

5

То не разрешено в Java (пока/если JSR 308 будет добавлен); вы можете только аннотировать классы, методы, поля, параметры и объявления переменных. Это последнее показано в документах. Однако для проверок на основе байт-кода, таких как проверка api, может потребоваться разместить его на методе или классе (или анонимном/внутреннем классе). Быстрое исправление Add Annotation для этих предупреждений в lint должно делать правильно.

+0

Ах, объявления переменных. Это то, что я не замечал. Спасибо, что указали! –

+0

Идея упомянуть в документах (т. Е. Blogpost во время ADT17) на http://tools.android.com/recent?offset=10. – pjv