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
.