Как добавить статические методы в классы Java в Котлине

Можно ли добавить новый статический метод в класс java.lang.Math в 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, это невозможно. Тем не менее, это рассматривается для будущего выпуска!

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

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

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

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

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

Intereting Posts
Лотские свойства и значения Kotlin сброшены: сбрасываемый ленивый делегат Котлин – нулевая безопасность? Mockito с тестированием асинхронного тестирования Kotlin Пользовательский геттер для свойств параметров типа Использование префикса «m» для переменных в Котлине Зритель звонков Невозможно разобрать json, используя Jackson в Kotlin Android kotlin project build застрял в приложении: задача kaptDebugKotlin Как создать построитель для класса данных Kotlin со многими неизменяемыми свойствами Элементы меню панели инструментов Android никогда не отображаются, но переходят в переполнение Можно ли использовать doReturn () и CALLS_REAL_METHODS с mockito-kotlin? Отключить генерацию META-INF / * в проекте kotlin Преобразование процедурных методов стиля в функциональный стиль Ошибка: выполнение выполнено для задачи ': app: compileDebugKotlinAfterJava' Защищенные члены недоступны в функциях расширения?