Перейти к основному содержимому

Допустимые имена предупреждений @SuppressWarnings

· 4 мин. чтения

1. Обзор

В этом руководстве мы рассмотрим различные имена предупреждений, которые работают с аннотацией @SuppressWarnings Java, которая позволяет нам подавлять предупреждения компилятора. Эти имена предупреждений позволяют нам подавлять определенные предупреждения. Доступные имена предупреждений будут зависеть от нашей IDE или компилятора Java. Eclipse IDE — наша ссылка для этой статьи.

2. Названия предупреждений

Ниже приведен список допустимых имен предупреждений, доступных в аннотации @SuppressWarnings :

  • all : это своего рода подстановочный знак, подавляющий все предупреждения.
  • бокс : подавляет предупреждения, связанные с операциями упаковки/распаковки
  • unused : подавляет предупреждения о неиспользуемом коде
  • cast : подавляет предупреждения, связанные с операциями приведения объектов
  • deprecation : подавляет предупреждения, связанные с устаревшим, например, устаревшим классом или методом.
  • ограничение : подавляет предупреждения, связанные с использованием нерекомендуемых или запрещенных ссылок.
  • dep-ann : подавляет предупреждения относительно устаревших аннотаций.
  • fallthrough : подавляет предупреждения, связанные с отсутствием операторов break в операторах switch .
  • finally : подавляет предупреждения, связанные с блоками finally , которые не возвращаются
  • hidden : подавляет предупреждения относительно локальных переменных, которые скрывают переменные.
  • неполный переключатель : подавляет предупреждения об отсутствующих записях в операторе переключения ( случай enum )
  • nls : подавляет предупреждения, связанные со строковыми литералами, отличными от nls.
  • null : подавляет предупреждения, связанные с нулевым анализом
  • serial : подавляет предупреждения, связанные с отсутствующим полем serialVersionUID , которое обычно находится в классе Serializable .
  • static-access : подавляет предупреждения, связанные с неправильным доступом к статической переменной.
  • синтетический доступ : подавляет предупреждения, связанные с неоптимизированным доступом из внутренних классов.
  • unchecked : подавляет предупреждения, связанные с непроверенными операциями
  • unqualified-field-access : подавляет предупреждения, связанные с неквалифицированным доступом к полю
  • javadoc : подавляет предупреждения, связанные с Javadoc
  • rawtypes : подавляет предупреждения, связанные с использованием необработанных типов.
  • resource : подавляет предупреждения, связанные с использованием ресурсов типа Closeable.
  • super : подавляет предупреждения, связанные с переопределением метода без супервызовов .
  • sync-override : подавляет предупреждения из-за отсутствия синхронизации при переопределении синхронизированного метода

3. Использование предупреждающих имен

В этом разделе будут показаны примеры использования различных имен предупреждений.

3.1. @SuppressWarnings («не используется»)

В приведенном ниже примере имя предупреждения подавляет предупреждение о unusedVal в методе:

@SuppressWarnings("unused")
void suppressUnusedWarning() {
int usedVal = 5;
int unusedVal = 10; // no warning here
List<Integer> list = new ArrayList<>();
list.add(usedVal);
}

3.2. @SuppressWarnings («устарело»)

В приведенном ниже примере имя предупреждения подавляет предупреждение об использовании метода @deprecated :

@SuppressWarnings("deprecated")
void suppressDeprecatedWarning() {
ClassWithSuppressWarningsNames cls = new ClassWithSuppressWarningsNames();
cls.deprecatedMethod(); // no warning here
}

@Deprecated
String deprecatedMethod() {
return "deprecated method";
}

3.3. @SuppressWarnings («провал»)

В приведенном ниже примере имя предупреждения подавляет предупреждение об отсутствующих операторах break — мы включили их сюда, закомментировав, чтобы показать, где в противном случае мы получили бы предупреждение:

@SuppressWarnings("fallthrough")
String suppressFallthroughWarning() {
int day = 5;
switch (day) {
case 5:
return "This is day 5";
// break; // no warning here
case 10:
return "This is day 10";
// break; // no warning here
default:
return "This default day";
}
}

3.4. @SuppressWarnings («серийный»)

Это имя предупреждения размещается на уровне класса. В приведенном ниже примере имя предупреждения подавляет предупреждение об отсутствующем идентификаторе serialVersionUID (которое мы закомментировали) в классе Serializable :

@SuppressWarnings("serial")
public class ClassWithSuppressWarningsNames implements Serializable {
// private static final long serialVersionUID = -1166032307853492833L; // no warning even though this is commented

4. Объединение нескольких имен предупреждений

Аннотация @SuppressWarnings ожидает массив String s, поэтому мы можем комбинировать несколько имен предупреждений:

@SuppressWarnings({"serial", "unchecked"})

5. Вывод

В этой статье представлен список допустимых имен предупреждений @SuppressWarnings . Как обычно, все примеры кода, показанные в этом руководстве, доступны на GitHub .