Kotlin
のJava.lang.Math
クラスに新しい静的メソッドを追加することは可能ですか?通常、このようなことは 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
は解決できませんでした...
Kotlin 1.3以降、これは不可能です。ただし、今後のリリースで検討中です!
この機能の実装を支援するには、この問題に投票してください: https://youtrack.jetbrains.com/issue/KT-11968
このアイデアはKotlinコミュニティで非常に人気があるため、すぐに利用できるようになると思います。
これは不可能だと思います。 ドキュメントによると 以下:
クラスにコンパニオンオブジェクトが定義されている場合は、コンパニオンオブジェクトの拡張関数とプロパティを定義することもできます。
Math
クラスはJava
クラスであり、Kotlin
クラスではなく、companion
オブジェクトが含まれていません。代わりに、clamp
メソッドをDouble
クラスに追加できます。
Kotlin 1.2の時点では、まだ不可能です。
回避策として、現在使用している環境クラスを静的に「拡張」するには、次のようにします。
Class EnvironmentExtensions {
companion object {
@JvmStatic
fun getSomething(): File {
...
return Environment.something()
}
}
}
これは理想的なソリューションではありませんが、IntelliJ/Android Studioのコード補完は使用方法に役立ちます。
val something = EnvironmentExtensions.getSomething()