2015-11-25 47 views
14

是否可以在Kotlinjava.lang.Math類中添加新的靜態方法?通常,Kotlin可能會有這種情況,這要歸功於Kotlin Extensions如何在Kotlin中爲Java類添加靜態方法

我已經試着做下面的我做了叫Extensions.kt文件:

fun Math.Companion.clamp(value:Double,minValue:Double,maxValue:Double):Double 
{ 
    return Math.max(Math.min(value,maxValue),minValue) 
} 

Math.Companion無法解析...

+2

爲什麼不將函數添加到Double類? '有趣的Double.clamp(min:Double,max Double)',被稱爲'1.0.clamp(2.0,3.0)'。 – nhaarman

+0

我認爲這將有可能在未來的版本 – voddan

+1

不coerceIn(https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/coerce-in.html)你需要什麼? –

回答

7

從Kotlin 1.1開始,這是不可能的。不過,它正在考慮未來的版本!

爲了幫助這一功能得到實現,去投票對這個問題:https://youtrack.jetbrains.com/issue/KT-11968

這種想法是在科特林社區很受歡迎,所以我敢打賭,它會在很快。

+0

對於屬於此答案的任何人,請投票給jetbrains發佈,以便我們可以提前使用該功能! –

9

我覺得這是不可能的。 Documentation says以下內容:

如果某個類有定義的伴隨對象,還可以定義伴隨對象的擴展函數和屬性。

Math類是一個Java類,而不是一個一個Kotlin和不具有companion對象在它。相反,您可以將clamp方法添加到Double類中。