Пометка устаревания в Kotlin
Пометка @Deprecated принимает сообщение для
отчёта компилятора. По умолчанию уровень -
DeprecationLevel.WARNING: сборка проходит,
но вызов помеченного объявления подсвечивается.
На устаревший расчёт скидки можно повесить явный текст и оставить уровень предупреждения:
@Deprecated(
message = "use computeRebate instead",
level = DeprecationLevel.WARNING
)
fun flatRebate(price: Int): Int = price / 10
fun computeRebate(price: Int): Int = price / 10
Параметр ReplaceWith добавляет в предупреждение
готовый фрагмент кода для замены. IDE часто подставляет
его по подсказке. Пример для другой устаревшей команды:
@Deprecated(
message = "flat fee helper is obsolete",
ReplaceWith("packFee(amount)")
)
fun wrapFee(amount: Int): Int = amount + 2
fun packFee(amount: Int): Int = amount + 2
Если уровень поднять до DeprecationLevel.ERROR,
компилятор отклоняет любой вызов помеченного объявления.
Саму функцию объявить можно, вызвать из программы
уже нельзя:
@Deprecated(
message = "removed from public API",
level = DeprecationLevel.ERROR
)
fun bannedQuote(): String = "old"
Пометьте функцию подсчёта дней в поездке как
устаревшую с уровнем предупреждения и текстом
о замене на новую функцию с тем же смыслом.
Оставьте один вызов старой функции в main
и убедитесь, что сборка даёт предупреждение.
Объявите вторую функцию выдачи токена с уровнем
ERROR. Попытка вызвать её из main
должна завершиться ошибкой компиляции.