Java类的静态扩展函数

是否可以添加一个静态扩展功能,类似于将扩展功能添加到伴随对象。 我试过了

public fun ByteBuffer.Companion.invoke(capacity: Int): ByteBuffer 

但是它引起了未解决的引用: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» } 

示例在Kotlin 0.15.126中有效