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
: подавляет предупреждения, связанные с Javadocrawtypes
: подавляет предупреждения, связанные с использованием необработанных типов.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 .