gpt4 book ai didi

lambda - 为什么我不能在 kotlin 中使用 lambda 接口(interface)?

转载 作者:行者123 更新时间:2023-12-02 10:19:28 26 4
gpt4 key购买 nike

看,我有一个 Java 类:

public final class JavaReceiveSingle {
public static void useSingle(Single single) {
single.doSth();
}
public static void useSingle2(SingleInterface singleInterface) {
singleInterface.doSth();
}
}

Java 接口(interface):

public interface SingleInterface {
void doSth();
}

kotlin 接口(interface):

interface Single {
fun doSth()
}

现在我可以在 kotlin 类中使用 lambda,例如:

JavaReceiveSingle.useSingle2({})

但是如果我想对 kotlin 接口(interface)做同样的事情:

JavaReceiveSingle.useSingle({})

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

如果我指定 Single 像:

JavaReceiveSingle.useSingle(Single{})

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

尽管以下代码有效:

JavaReceiveSingle.useSingle(object :Single{
override fun aa() {}
})

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

最佳答案

目前,SAM conversion Kotlin 中定义的接口(interface)不支持。 YouTrack 中有一个问题。 ,但目前我建议使用函数类型而不是单一方法接口(interface)。如果你想让它们有一个合适的名字,你可以使用 type aliases ,但不要过度使用它们。在许多情况下,函数类型与良好的方法/变量名称一起就足以表达。

关于lambda - 为什么我不能在 kotlin 中使用 lambda 接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44323826/

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