Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin Java类上的静态扩展函数_Kotlin - Fatal编程技术网

Kotlin Java类上的静态扩展函数

Kotlin Java类上的静态扩展函数,kotlin,Kotlin,是否可以添加一个静态扩展函数,类似于向同伴对象添加扩展函数。我试过了 public fun ByteBuffer.Companion.invoke(capacity: Int): ByteBuffer 但它造成了无法解决的问题:同伴。我只能假设这是因为java代码中没有定义Companion。简短的回答:现在不可能。但在将来 您是对的,Java类没有伴生对象。 您只能将扩展添加到类(将显示在类的实例上)或声明的伴随对象(在类上看起来像静态的): class A{companion object

是否可以添加一个静态扩展函数,类似于向同伴对象添加扩展函数。我试过了

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

但它造成了无法解决的问题:同伴。我只能假设这是因为java代码中没有定义Companion。

简短的回答:现在不可能。但在将来

您是对的,Java类没有伴生对象。 您只能将扩展添加到类(将显示在类的实例上)或声明的伴随对象(在类上看起来像静态的):

class A{companion object}
B类{伴生对象测试}
fun A.Companion.foo(){println(“Test A.foo”)}
fun B.Test.foo(){println(“Test B.foo”)}
趣味主线(args:Array){
A.foo()//打印«测试A.foo»
B.foo()//打印«测试B.foo»
}

目前不支持此操作,这同样适用于Kotlin类,该类没有伴生对象。可能重复的否决票:不相关的回答否决票:非常相关且信息丰富。正确的答案与正确的链接。
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»
}