Подтвердить что ты не робот

Как добавить статические методы в классы 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 не удалось решить...

4b9b3361

Ответ 1

Как и в случае с Котлин 1.1, это невозможно. Тем не менее, это рассматривается для будущего выпуска!

Чтобы эта функция появилась, выполните голосование по этой проблеме: https://youtrack.jetbrains.com/issue/KT-11968

Эта идея очень популярна в сообществе Котлин, поэтому, я уверен, она скоро появится.

Ответ 2

Я думаю, что это невозможно. Документация говорит следующее:

Если у класса есть объект-компаньон, вы можете также определить функции и свойства расширения для объекта-компаньона.

Класс Math - это класс Java, а не Kotlin один, и в нем нет объекта companion. Вы можете добавить метод clamp к классу Double.