如何在Kotlin中为Java类添加静态方法

Eri*_*ric 38 kotlin kotlin-extension

是否可以在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)
}
Run Code Online (Sandbox Code Playgroud)

Math.Companion无法解决......

Sup*_*tar 33

从Kotlin 1.3开始,这是不可能的.但是,它正在考虑将来的版本!

要帮助实现此功能,请对此问题进行投票:https://youtrack.jetbrains.com/issue/KT-11968

这个想法在Kotlin社区很受欢迎,所以我打赌它会很快就会出现.

  • 对于落入此答案的任何人,请投票支持jetbrains帖子,以便我们可以更早地使用该功能! (2认同)

aga*_*aga 11

我认为这是不可能的.文档说明如下:

如果类定义了伴随对象,您还可以为伴随对象定义扩展函数和属性.

Math班是一Java类,而不是Kotlin一个,没有一个companion对象吧.您可以clamp改为向Double该类添加方法.


Hru*_*hay 2

在其他答案之上更新:静态扩展将在 2.0 之后立即可用

官方公告:kotlin conf 2023