![](/img/trans.png)
[英]How to reflect classes like java.Math(I would like to extract parameters' types of functions like: Math.abs(), etc.)
[英]Java Math like classes in Kotlin
我們如何在Kotlin
像Util類一樣創建Java
Math。 這樣我就可以調用Math.add()
類的東西。 我嘗試使用伴侶對象。 讓我知道是否還有另一種方法。
您可以使用簡單的object
聲明來實現該語法:
object Math {
fun add(x: Int, y: Int) = x + y
}
這將創建一個單例類,在運行時只有一個實例,您可以使用Math.add(1, 4)
語法在此實例上調用方法。
伴侶對象只是這些object
聲明嵌套在類中的特例,其成員可以通過容器類的標識符進行訪問,類似於Java中的靜態函數。
實際上,您可以將任何對象嵌套在一個類中, companion
關鍵字僅允許您在沒有顯式名稱的情況下創建它們。
命名嵌套對象的示例:
class A {
fun a() {}
object B {
fun b() {}
}
companion object {
fun o() {}
}
}
然后可以像下面這樣調用這些函數:
A().a() // this call of course needs an instance of A
A.B.b()
A.Companion.o()
A.o()
你可以這樣做
class Math {
companion object {
fun add(val x: Int, val y: Int): Int {
return x+y
}
fun subtract(val x: Int, val y: Int): Int {
return x-y
}
fun multiply(val x: Int, val y: Int): Int {
return x*y
}
...
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.