12
是否可以添加一個類似於將擴展函數添加到伴隨對象的靜態擴展函數。我試過Java類上的靜態擴展函數
public fun ByteBuffer.Companion.invoke(capacity: Int): ByteBuffer
但它造成Unresolved reference:Companion。我只會假設這是因爲Companion沒有在java代碼中定義。
是否可以添加一個類似於將擴展函數添加到伴隨對象的靜態擴展函數。我試過Java類上的靜態擴展函數
public fun ByteBuffer.Companion.invoke(capacity: Int): ByteBuffer
但它造成Unresolved reference:Companion。我只會假設這是因爲Companion沒有在java代碼中定義。
你說得對,Java類沒有伴侶對象。您可以添加擴展的類(將顯示在類的實例),或者宣佈同伴對象(看起來像一個靜態的類):
class A { companion object }
class B { companion object Test }
fun A.Companion.foo() { println("Test A.foo") }
fun B.Test.foo() { println("Test B.foo") }
fun main(args: Array<String>) {
A.foo() // prints «Test A.foo»
B.foo() // prints «Test B.foo»
}
示例工程科特林0.15.126
目前不支持 –
同樣適用於Kotlin-Class,它沒有Companion對象。 – D3xter