Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

@Deprecated

Помечает устаревший класс, метод или поле. Компилятор предупреждает, когда их используют.

Доступно с: Java 5

Синтаксис

@Documented @Retention(RUNTIME) public @interface Deprecated

Параметры

ПараметрТипОписание
sinceStringВерсия, с которой элемент устарел (Java 9).
forRemovalbooleantrue — элемент будет удалён в будущих версиях (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 и чтение аннотаций во время работы программы.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.