小编use*_*165的帖子

为什么我不能在kotlin上使用lambda作为接口?

看,我有一个Java类:

public final class JavaReceiveSingle {
    public static void useSingle(Single single) {
        single.doSth();
    }
    public static void useSingle2(SingleInterface singleInterface) {
        singleInterface.doSth();
    }
}
Run Code Online (Sandbox Code Playgroud)

Java接口:

public interface SingleInterface {
    void doSth();
}
Run Code Online (Sandbox Code Playgroud)

Kotlin界面:

interface Single {
    fun doSth()
}
Run Code Online (Sandbox Code Playgroud)

现在,我可以在类似kotlin的类中使用lambda:

JavaReceiveSingle.useSingle2({})
Run Code Online (Sandbox Code Playgroud)

但是,如果我想对kotlin界面做同样的事情:

JavaReceiveSingle.useSingle({})
Run Code Online (Sandbox Code Playgroud)

IDE将显示错误:必需:单!找到:()->单位

如果我指定Single,例如:

JavaReceiveSingle.useSingle(Single{})
Run Code Online (Sandbox Code Playgroud)

仍然错误:Interface Single没有构造!

尽管以下代码可以工作:

JavaReceiveSingle.useSingle(object :Single{
    override fun aa() {}
})
Run Code Online (Sandbox Code Playgroud)

但是为什么我不能将lambda用于kotlin接口呢?

lambda kotlin

5
推荐指数
1
解决办法
614
查看次数

标签 统计

kotlin ×1

lambda ×1