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