+-
java – Kotlin:Interface …没有构造函数
我正在将我的一些 Java代码转换为Kotlin,我不太了解如何实例化Kotlin代码中定义的接口.作为一个例子,我有一个接口(在Java代码中定义):

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

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

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

它工作正常.但是,当我将MyInterface转换为Kotlin时:

interface MyInterface {
    fun onLocationMeasured(location: Location)
}

我收到一条错误消息:当我尝试实例化它时,接口MyListener没有构造函数 – 虽然在我看来除了语法之外没有任何改变.我是否误解了Kotlin界面的工作原理?

最佳答案
您的Java代码依赖于SAM转换 – 使用单个抽象方法将lambda自动转换为接口.对于Kotlin中定义的接口,SAM转换为 currently not supported.相反,您需要定义实现接口的匿名对象:

val obj = object : MyInterface {
    override fun onLocationMeasured(location: Location) { ... }
}
点击查看更多相关文章

转载注明原文:java – Kotlin:Interface …没有构造函数 - 乐贴网