Предполагается, что класс Log
, чьи методы определены в companion object
, например ::
class Log {
companion object {
@JvmStatic
fun get() : String = TODO()
@JvmStatic
fun getNullable() : String? = TODO()
}
}
Как насчет простого удаления @JvmStatic
? или вместо этого создаете функцию расширения?
fun Log.Companion.getNullable() : String? = TODO()
class Log {
companion object {
@JvmStatic
fun get() : String = TODO()
}
}
Функции расширения обычно не так легко доступны в Java, как в Kotlin. Для удаления @JvmStatic
или функции расширения в коде Java потребовалось бы следующее: Log.Companion.getNullable
вместо Log.getNullable
... Возможно, это также подходит для вас вместо того, чтобы осудить его.
Даже если мое предположение неверно, функция расширения может удовлетворить ваши потребности.
Что касается устаревшего метода только для Kotlin ... Я не думаю, что это работает, но вот еще один обходной путь для этого. Просто переименуйте метод и используйте @JvmName("get")
для метода, например ::
@JvmStatic
@JvmName("get")
fun dont_ever_use_this_method_again_in_Kotlin() : String = TODO()
Это позволит Log.get
с Java, но не с Kotlin. И я думаю, мы можем согласиться с тем, что никто не позвонит Log.dont_ever_use_this_method_again_in_Kotlin
в Котлин, верно?