看,我有一个 Java 类:
public final class JavaReceiveSingle {
public static void useSingle(Single single) {
single.doSth();
}
public static void useSingle2(SingleInterface singleInterface) {
singleInterface.doSth();
}
}
Java 接口:
public interface SingleInterface {
void doSth();
}
科特林接口:
interface Single {
fun doSth()
}
现在我可以在 kotlin 类中使用 lambda,例如:
JavaReceiveSingle.useSingle2({})
但如果我想对 kotlin 接口做同样的事情:
JavaReceiveSingle.useSingle({})
IDE 将显示错误:Required: Single!找到:()->单位
如果我指定 Single 像:
JavaReceiveSingle.useSingle(Single{})
仍然错误:Interface Single 没有构造!
尽管以下代码有效:
JavaReceiveSingle.useSingle(object :Single{
override fun aa() {}
})
但为什么我不能将 lambda 用于 kotlin 接口呢?