Вы можете использовать @SuppressWarnings("unchecked")
, который поддерживается как компилятором eclipse, так и javac.
Но помните, что аннотация @SuppressWarnings
используется вашим компилятором, который может иметь свои собственные значения.JLS только заставляет компилятор понимать значения «unchecked» и «deprecated» (на данный момент).
Поставщики компилятора должны задокументировать имена предупреждений, которые они поддерживают в сочетании с этим типом аннотации. Им рекомендуется сотрудничать, чтобы гарантировать, что одни и те же имена работают на нескольких компиляторах .
Если вы используете Helios, вам нужно будет установить конкретный параметр, разрешающий вместо @SuppressWarnings("unchecked")
из @SuppressWarnings("rawtypes")
,
Если невозможно обновить код новым токеном, системное свойство suppressRawWhenUnchecked=true
может быть установлено при запуске Eclipse.
Ресурсы:
РЕДАКТИРОВАТЬ: вот теперь недоступная статья кнола, которая использовалась в качестве ссылкиПервоначально написанный Алекс Миллер .
@ 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 - подавить все предупреждения из этого кода
- deprecation - отключить предупреждения от использования устаревшего кода
- unchecked - подавить предупреждения от неконтролируемого вызова или неконтролируемого приведения
- fallthrough - подавить предупреждения, если коммутатор проваливается без поиска действительного регистра (и не по умолчанию)
- path -
- serial - подавить предупреждения, если класс Serializable не определяет serialVersionUID
- finally - подавить предупреждения от возврата в рамках finally (которое будет игнорировать возвращение при попытке)
И SunJDK 1.6 добавляет:
- cast
- divzero - подавлять предупреждения, если обнаружено целочисленное деление на ноль
- пусто
- переопределяет
- none
Среды IDE и инструменты статического анализа обычно поддерживают большое количество других возможных значений для @SuppressWarnings.Эти значения соответствуют определенным статическим анализам, выполняемым IDE.
Eclipse
Значения предупреждений Eclipse для Eclipse 3.3 документированы в документах JDT .
- all - подавить все предупреждения
- boxing - подавить предупреждения относительно операций упаковки / распаковки
- cast - подавить предупреждения относительно операций приведения
- dep-ann - подавить предупреждения относительно устаревшей аннотации
- устаревание - подавление предупреждений относительно устаревания
- fallthrough - подавить предупреждения относительно пропущенных разрывов в операторах switch
- finally - подавить предупреждения относительно блока finally, которые не возвращаются
- hiding - подавить предупреждения относительно локальных переменных, которые скрывают переменную
- incomplete-switch - подавить предупреждения относительно пропущенных записей в операторе switch (enum case)
- nls - подавить предупреждения относительно строковых литералов, отличных от nls
- ноль - подавить предупреждения относительно нулевого анализа
- ограничение - подавление предупреждений относительно использования нежелательных или запрещенных ссылок
- serial - подавить предупреждения относительно отсутствующего поля serialVersionUID для сериализуемого класса
- static-access - подавить предупреждения относительно неправильного статического доступа
- синтетический доступ - подавить предупреждения относительно неоптимизированного доступа из внутренних классов
- unchecked - подавить предупреждения относительно непроверенных операций
- unqualified-field-access - подавить предупреждения относительно неквалифицированного доступа к полям
- unused - подавить предупреждения относительно неиспользуемого кода
IntelliJ
1164 * NetBeans *
Примеры * +1166 *
Пример указания одного предупреждения:
@SuppressWarnings("unchecked")
public void methodWithScaryWarnings() {
List rawList = new ArrayList();
List<String> stringList = (List<String>)rawList;
}
Пример использования двух предупреждений:
@SuppressWarnings({"unchecked","deprecation"})
public void methodWithScaryWarnings() {
callDeprecatedMethod();
}