gpt4 book ai didi

Java 与 Kotlin 接口(interface)声明

转载 作者:行者123 更新时间:2023-12-02 12:39:07 27 4
gpt4 key购买 nike

假设我有这个 Java 和 Kotlin 接口(interface):

public interface JavaInterface {

void onTest();
}

interface KotlinInterface {

fun onTest()
}

为什么我无法创建没有构造函数的 Kotlin 接口(interface)实例?

// this is okay
val javaInterface: JavaInterface = JavaInterface {

}

// compile-time exception: interface does not have constructor
val kotlinInterface1: KotlinInterface = KotlinInterface {

}

// this is okay
val kotlinInterface2: KotlinInterface = object : KotlinInterface {
override fun onTest() {

}
}

为什么我无法创建 KotlinInterface 的实例就像我对 JavaExample 所做的那样就像第一个例子一样?

最佳答案

这是因为 Kotlin 有仅适用于 Java 接口(interface)的 SAM(“单一抽象方法”)。就是这样designdocs 上有一些关于此的信息。还有:

Also note that this feature works only for Java interop; since Kotlin has proper function types, automatic conversion of functions into implementations of Kotlin interfaces is unnecessary and therefore unsupported.

Related issue

关于Java 与 Kotlin 接口(interface)声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45002129/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com