gpt4 book ai didi

java - Kotlin:接口(interface)......没有构造函数

转载 作者:IT老高 更新时间:2023-10-28 11:28:42 24 4
gpt4 key购买 nike

我正在将我的一些 Java 代码转换为 Kotlin,但我不太了解如何实例化在 Kotlin 代码中定义的接口(interface)。例如,我有一个接口(interface)(在 Java 代码中定义):

public interface MyInterface {
void onLocationMeasured(Location location);
}

然后在我的 Kotlin 代码中进一步实例化这个接口(interface):

val myObj = new MyInterface { Log.d("...", "...") }

而且效果很好。但是,当我将 MyInterface 转换为 Kotlin 时:

interface MyInterface {
fun onLocationMeasured(location: Location)
}

当我尝试实例化它时,我收到一条错误消息:Interface MyListener does not have constructors - 尽管在我看来,除了语法之外没有任何变化。我是否误解了 Kotlin 中接口(interface)的工作原理?

最佳答案

您的 Java 代码依赖于 SAM 转换 - 将 lambda 自动转换为具有单个抽象方法的接口(interface)。 SAM 转换为 currently not supported用于 Kotlin 中定义的接口(interface)。相反,您需要定义一个实现接口(interface)的匿名对象:

val obj = object : MyInterface {
override fun onLocationMeasured(location: Location) { ... }
}

关于java - Kotlin:接口(interface)......没有构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43737785/

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