Устаревшие функции kotlin не предупреждены в чистом java-проекте
У меня есть тестовый класс, который написан исключительно с помощью kotlin
в библиотечном проекте.
class Test{
@Deprecated(message = "Use other function")
fun testFunction(id: String): Test {
this.testId = id
return this
}
}
Я устарел testFunction() с помощьюDeprecated
аннотация. КстатиDeprecated
класс находится в пакете kotlin. Когда я тестирую эту устаревшую функцию в проекте kotlin, она работает должным образом (ide показывает устаревшее предупреждение и зачеркивание)
Пример: Test(). testFunction("тест")
Но в проекте java не отображается предупреждение или зачеркивание, чтобы функционировать, пока. Когда я открываю объявление устаревшей функции, это как показано ниже
@Deprecated(
message = "Use other function"
)
@NotNull
public final Test testFunction(@NotNull String var1) {
Intrinsics.checkParameterIsNotNull(var1, "id");
this.testId = var1;
return this;
}
любая помощь будет оценена
1 ответ
В Kotlin функции, свойства и классы, отмеченные kotlin.Deprecated
аннотации также получают атрибут Deprecated в результирующем байт-коде JVM. Это позволяет компилятору Java видеть их как устаревшие и выдавать соответствующее предупреждение.
Возьмем, к примеру, эту функцию, которая устарела в Kotlin: https://github.com/JetBrains/kotlin/blob/v1.3.50/libraries/stdlib/common/src/generated/_Ranges.kt Если вы попытаетесь назовите его из Java как
kotlin.ranges.RangesKt.intRangeContains(null, 1.0);
Компилятор javac сообщит следующее предупреждение:
Warning:(55, 31) java: intRangeContains(kotlin.ranges.ClosedRange<java.lang.Integer>,double) in kotlin.ranges.RangesKt___RangesKt has been deprecated