看,我有一个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接口呢?