Пометка устаревания в Java
Пометка @Deprecated сообщает, что объявление
устарело. Компилятор подсвечивает любой вызов или
использование помеченного элемента, но сборка обычно
проходит.
С Java 9 у метки есть параметры since и
forRemoval. Первый фиксирует версию, с которой
API считают старым, второй - что его планируют убрать.
На устаревший расчёт скидки можно повесить явные
значения:
class Pricing {
@Deprecated(since = "2.1", forRemoval = false)
static int flatRebate(int price) {
return price / 10;
}
static int computeRebate(int price) {
return price / 10;
}
}
Текст для разработчика часто дополняют тегом
@deprecated в комментарии JavaDoc: IDE
показывает его рядом с предупреждением. Пример
для другой устаревшей команды:
class Fees {
/**
* @deprecated use packFee instead
*/
@Deprecated(since = "3.0")
static int wrapFee(int amount) {
return amount + 2;
}
static int packFee(int amount) {
return amount + 2;
}
}
Если forRemoval установлен в true,
предупреждение звучит жёстче: API готовят к удалению.
Сам метод объявить можно, но новый код лучше не
опираться на него:
class Quotes {
@Deprecated(since = "4.0", forRemoval = true)
static String bannedQuote() {
return "old";
}
}
Пометьте метод подсчёта дней в поездке как
устаревший с параметром since и текстом
в JavaDoc о замене на новый метод с тем же
смыслом. Оставьте один вызов старого метода
в main и убедитесь, что сборка даёт
предупреждение.
Объявите второй метод выдачи токена с
forRemoval = true. В JavaDoc укажите,
что вызовы нужно убрать до следующей версии.