是否可以向java.lang.Math
中的Kotlin
类添加新的静态方法?通常,感谢Kotlin Extensions,Kotlin可以做到这一点。
我已经尝试在名为Extensions.kt
的文件中执行以下操作:
fun Math.Companion.clamp(value:Double,minValue:Double,maxValue:Double):Double
{
return Math.max(Math.min(value,maxValue),minValue)
}
但无法解析Math.Companion
...
答案 0 :(得分:31)
从Kotlin 1.3开始,这是不可能的。但是,它正在考虑将来发布!
要帮助实施此功能,请对此问题进行投票:https://youtrack.jetbrains.com/issue/KT-11968
这个想法在Kotlin社区很受欢迎,所以我打赌它会很快就会出现。
答案 1 :(得分:10)
我认为这是不可能的。 Documentation says以下内容:
如果某个类定义了一个伴随对象,您还可以为该伴随对象定义扩展函数和属性。
Math
类是Java
类,而不是Kotlin
类,并且没有companion
个对象。您可以将clamp
方法添加到Double
类中。
答案 2 :(得分:2)
至于Kotlin 1.2,它仍然是不可能的。
作为一种解决方法,静态地扩展"我目前正在使用的环境类:
Class EnvironmentExtensions {
companion object {
@JvmStatic
fun getSomething(): File {
...
return Environment.something()
}
}
}
这不是一个理想的解决方案,但IntelliJ / Android Studio代码完成有助于使用:
val something = EnvironmentExtensions.getSomething()