@Deprecated
Помечает устаревший класс, метод или поле. Компилятор предупреждает, когда их используют.
Доступно с: Java 5
Синтаксис
@Documented @Retention(RUNTIME) public @interface DeprecatedПараметры
| Параметр | Тип | Описание |
|---|---|---|
| since | String | Версия, с которой элемент устарел (Java 9). |
| forRemoval | boolean | true — элемент будет удалён в будущих версиях (Java 9). |
Примеры
Устаревший метод продолжает работать, а аннотация доступна во время выполнения:
class Calculator {
@Deprecated(since = "2.0", forRemoval = true)
int add(int a, int b) {
return sum(a, b);
}
int sum(int a, int b) {
return a + b;
}
}
void main() throws Exception {
IO.println(new Calculator().add(2, 3));
Deprecated info = Calculator.class
.getDeclaredMethod("add", int.class, int.class)
.getAnnotation(Deprecated.class);
IO.println(info.since() + " " + info.forRemoval());
}Результат:
5
2.0 trueИспользование устаревшего API из JDK — компилятор выводит предупреждение, но программа запускается:
void main() {
Integer n = new Integer(5);
IO.println(n);
}Результат:
Main.java:2: warning: [deprecation] Integer(int) in Integer has been deprecated
Integer n = new Integer(5);
^
1 warning
5Примечания
Вместе с аннотацией в Javadoc пишут тег @deprecated с объяснением, чем заменить элемент. Предупреждение появляется только при использовании из другого класса верхнего уровня; внутри того же файла-класса его нет. Предупреждения отключает @SuppressWarnings("deprecation"), а для forRemoval = true — @SuppressWarnings("removal").
См. также
- @SuppressWarnings — Отключает выбранные предупреждения компилятора для класса, метода или переменной.
- @Override — Помечает метод, который переопределяет метод родителя или интерфейса. Компилятор проверяет, что это действительно так.
- Object.getClass() — Возвращает класс объекта во время выполнения.
В учебнике
- Аннотации — Аннотации в Java — @Override, @Deprecated, @FunctionalInterface, @SuppressWarnings, объявление своей аннотации, @Retention, @Target и чтение аннотаций во время работы программы.