@SuppressWarnings
Отключает выбранные предупреждения компилятора для класса, метода или переменной.
Доступно с: Java 5
Синтаксис
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, MODULE}) @Retention(SOURCE) public @interface SuppressWarningsПараметры
| Параметр | Тип | Описание |
|---|---|---|
| value | String[] | Названия предупреждений: unchecked, deprecation, removal, rawtypes и другие. |
Примеры
Непроверяемое приведение к List<String> даёт предупреждение:
List<String> names(Object data) {
return (List<String>) data;
}
void main() {
IO.println(names(List.of("Anna", "Oleg")));
}Результат:
Main.java:2: warning: [unchecked] unchecked cast
return (List<String>) data;
^
required: List<String>
found: Object
1 warning
[Anna, Oleg]С аннотацией на методе предупреждения нет:
@SuppressWarnings("unchecked")
List<String> names(Object data) {
return (List<String>) data;
}
void main() {
IO.println(names(List.of("Anna", "Oleg")));
}Результат:
[Anna, Oleg]Примечания
Ставьте аннотацию как можно ближе к проблемному месту — на переменную или метод, а не на весь класс, — и только когда уверены, что код безопасен. Несколько значений передают массивом: @SuppressWarnings({"unchecked", "rawtypes"}). Набор поддерживаемых имён зависит от компилятора и IDE; javac понимает те же, что и ключ -Xlint.
См. также
- @Deprecated — Помечает устаревший класс, метод или поле. Компилятор предупреждает, когда их используют.
- @Override — Помечает метод, который переопределяет метод родителя или интерфейса. Компилятор проверяет, что это действительно так.
- var — Объявляет локальную переменную, тип которой компилятор выводит из значения.
В учебнике
- Аннотации — Аннотации в Java — @Override, @Deprecated, @FunctionalInterface, @SuppressWarnings, объявление своей аннотации, @Retention, @Target и чтение аннотаций во время работы программы.