Java类上的静态扩展函数

sub*_*ixt 12 kotlin

是否可以添加类似于向伴随对象添加扩展函数的静态扩展函数.我试过了

public fun ByteBuffer.Companion.invoke(capacity: Int): ByteBuffer
Run Code Online (Sandbox Code Playgroud)

但它引起了未解决的引用:伴侣.我只假设这是因为Companion没有在java代码中定义.

Art*_*pov 6

你是对的,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»
}
Run Code Online (Sandbox Code Playgroud)

示例适用于Kotlin 0.15.126

  • 投票:非常相关且信息丰富。正确答案带有正确链接。 (6认同)