generic - ¿Cómo se pueden agregar métodos estáticos a las clases de Java en Kotlin?
new object in kotlin (3)
A partir de Kotlin 1.2 todavía no es posible.
Como solución temporal, para "ampliar" estáticamente la clase de entorno que estoy utilizando actualmente:
Class EnvironmentExtensions {
companion object {
@JvmStatic
fun getSomething(): File {
...
return Environment.something()
}
}
}
No es una solución ideal, pero la finalización del código IntelliJ / Android Studio ayuda con el uso:
val something = EnvironmentExtensions.getSomething()
¿Es posible agregar un nuevo método estático a la clase java.lang.Math en Kotlin ? Generalmente, estas cosas son posibles en Kotlin gracias a las Extensiones Kotlin .
Ya intenté hacer lo siguiente en un archivo que hice llamado Extensions.kt :
fun Math.Companion.clamp(value:Double,minValue:Double,maxValue:Double):Double
{
return Math.max(Math.min(value,maxValue),minValue)
}
pero Math.Companion no pudo ser resuelto ...
A partir de Kotlin 1.2, esto no es posible. Sin embargo, está siendo considerado para un futuro lanzamiento!
Para ayudar a implementar esta función, vaya a votar sobre este tema: https://youtrack.jetbrains.com/issue/KT-11968
Esta idea es muy popular en la comunidad de Kotlin, así que apuesto a que será muy pronto.
Creo que esto no es posible. La documentación dice lo siguiente:
Si una clase tiene un objeto compañero definido, también puede definir funciones de extensión y propiedades para el objeto compañero.
La clase de Math es una clase de Java , no una de Kotlin y no tiene un objeto companion . En su lugar, puede agregar un método de clamp a la clase Double .