Ответ 1
Вы можете использовать @SuppressWarnings("unchecked")
, который поддерживается как компилятором eclipse, так и javac.
Но помните, что аннотация @SuppressWarnings
используется вашим компилятором, который может иметь свои собственные значения. JLS только заставляет компилятор понимать значения "unchecked" и "derecated" (пока).
Поставщики компилятора должны документировать имена предупреждений, которые они поддерживают, в сочетании с этим типом аннотации. Им предлагается сотрудничать, чтобы гарантировать, что одни и те же имена работают с несколькими компиляторами.
Если вы используете Helios, вам нужно будет установить определенную опцию, чтобы разрешить @SuppressWarnings("unchecked")
вместо @SuppressWarnings("rawtypes")
,
Если невозможно обновить код новым токеном, системное свойство
suppressRawWhenUnchecked=true
можно установить при запуске Eclipse.
Ресурсы:
- JLS - @SuppressWarnings()
- Eclipse JDT (компилятор Java, новый токен типа "rawtypes" для аннотации @SuppressWarnings)
EDIT: вот теперь недоступная статья knol, которая использовалась как ссылка, первоначально написанная Alex Miller.
@SuppressWarnings Аннотации в Java
Стандартная аннотация для подавления различных предупреждений
Аннотации SuppressWarnings были добавлены как стандартная аннотация в Java SE 5.
Определение
Аннотация @SuppressWarnings определена в Спецификации языка Java раздел 9.6.1.5. В этом разделе указано:
Тип аннотации
SuppressWarnings
поддерживает управление программистами над предупреждениями, иначе выдаваемыми компилятором Java. Он содержит один элемент, который является массивомString
. Если объявление программы аннотируется аннотацией@SuppressWarnings(value = {S1, ... , Sk})
, тогда компилятор Java не должен сообщать о предупреждении, идентифицированном одним из S1,..., Sk, если это предупреждение было бы создано в результате аннотированной декларации или любого из его частей.Непроверенные предупреждения идентифицируются строкой "
unchecked
".В последующем разделе на
@Deprecation
также упоминается, что эти предупреждения могут быть подавлены с помощью@SuppressWarnings("deprecation")
.Допустимые типы предупреждений
Только две строки предупреждения, упомянутые в самой спецификации, являются "непроверенными" и "устаревшими". Тем не менее, Sun JDK использует большой набор строк в компиляторе. Вы можете определить текущий набор, выполнив:
javac -X
который покажет вам (среди прочего) правильные настройки для -Xlint.
Например, Sun JDK 1.5 показывает:
- all - отключить все предупреждения из этого кода
- debrecation - запретить использование устаревшего кода
- unchecked - отключить предупреждения от непроверенного вызова или непроверенного броска
- fallthrough - подавлять предупреждения, если коммутатор проваливается, не найдя действительный случай (и не по умолчанию)
- путь -
- serial - подавлять предупреждения, если класс Serializable не определяет serialVersionUID
- finally - подавить предупреждения от возврата в конце (который будет игнорировать возврат с попыткой)
И Sun JDK 1.6 добавляет:
- литая
- divzero - подавлять предупреждения, если обнаружено целочисленное деление на ноль
- пустой
- переопределяет
- ни один
Средство IDE и средство статического анализа обычно поддерживают большое количество других возможных значений для @SuppressWarnings. Эти значения соответствуют конкретным проверкам статического анализа, выполняемым IDE.
Затмение
Значения Eclipse для Eclipse 3.3 задокументированы в документах JDT.
- all - запретить все предупреждения
- бокс - подавление предупреждений относительно операций бокса/распаковки
- литье - подавление предупреждений относительно операций литья
- dep-ann - подавлять предупреждения относительно устаревшей аннотации
- отказ - подавление предупреждений относительно устаревания
- прохождение - подавление предупреждений относительно отсутствующих разрывов в операторах switch
- finally - подавить предупреждения относительно блока finally, которые не возвращаются
- скрытие - подавление предупреждений относительно локалей, которые скрывают переменную
- incomplete-switch - подавляет предупреждения относительно отсутствующих записей в инструкции switch (перечисление)
- nls - подавлять предупреждения относительно строковых литералов, отличных от nls
- null - подавлять предупреждения относительно нулевого анализа
- ограничение - подавлять предупреждения относительно использования запрещенных или запрещенных ссылок
- serial - подавлять предупреждения относительно отсутствующего поля serialVersionUID для сериализуемого класса
- static-access - подавлять предупреждения относительно неправильного статического доступа
- синтетический доступ - подавлять предупреждения относительно неоптимизированного доступа из внутренних классов
- unchecked - подавлять предупреждения относительно непроверенных операций
- unqualified-field-access - подавлять предупреждения относительно доступа к полям неквалифицированные
- unused - подавлять предупреждения относительно неиспользуемого кода
IntelliJ
NetBeans
Примеры
Пример указания одного предупреждения:
@SuppressWarnings("unchecked") public void methodWithScaryWarnings() { List rawList = new ArrayList(); List<String> stringList = (List<String>)rawList; }
Пример использования двух предупреждений:
@SuppressWarnings({"unchecked","deprecation"}) public void methodWithScaryWarnings() { callDeprecatedMethod(); }