在Kotlin中,我们无法创建实现具有不同签名的2个lambda的类,如下所示:
class Test<T> : (T) -> Unit, () -> T {
...
}
出现以下错误:
我知道发生这种情况的原因:所有的lambda都是
FunctionN
接口(interface),所有FunctionN
接口(interface)都扩展了一个称为Function
的标记接口(interface),该接口(interface)无法被调用。但最后一个也是上述泛型冲突和错误的根本原因。我的问题可能是向Kotlin团队提出的:所有
FunctionN
都扩展Function
接口(interface)有什么理由吗?也许一些内部/字节码的东西对我们来说并不明显,但是对下面的性能进行了一些棘手的优化。 最佳答案
https://github.com/JetBrains/kotlin/blob/master/spec-docs/function-types.md提供了有关Function
使用的一些有限信息:
(注意:虚拟的Function*
类在kotlin
包中,而kotlin.jvm.functions.Function*
接口(interface)是真实的。)
“目标”部分列出了此方法解决的问题:
关于kotlin - 在Kotlin中扩展2个具有不同签名的lambda,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56292196/