Как добавить статические методы в классы Java в Котлине
Можно ли добавить новый статический метод в класс java.lang.Math
в Kotlin
? Обычно такие вещи возможны в Kotlin благодаря расширениям Kotlin.
Я уже пробовал сделать следующее в файле, который я сделал с именем Extensions.kt
:
fun Math.Companion.clamp(value:Double,minValue:Double,maxValue:Double):Double
{
return Math.max(Math.min(value,maxValue),minValue)
}
но Math.Companion
не удалось решить...
Ответы
Ответ 1
Как и в случае с Котлин 1.1, это невозможно. Тем не менее, это рассматривается для будущего выпуска!
Чтобы эта функция появилась, выполните голосование по этой проблеме: https://youtrack.jetbrains.com/issue/KT-11968
Эта идея очень популярна в сообществе Котлин, поэтому, я уверен, она скоро появится.
Ответ 2
Я думаю, что это невозможно. Документация говорит следующее:
Если у класса есть объект-компаньон, вы можете также определить функции и свойства расширения для объекта-компаньона.
Класс Math
- это класс Java
, а не Kotlin
один, и в нем нет объекта companion
. Вы можете добавить метод clamp
к классу Double
.