gpt4 book ai didi

Kotlin 声明冲突

转载 作者:行者123 更新时间:2023-12-01 12:15:17 25 4
gpt4 key购买 nike

我有一个问题。除了添加 @JvmName 之外,还有其他方法可以修复此代码吗?

class Test() {
fun <T> apply(calc: (String, List<Double>, Double, Double) -> T): T {
return calc("a", listOf(), 1.2, 3.4)
}

fun <T> apply(calc: (String, Double, Double, Double) -> T): T {
return calc("a", 1.2, 3.4, 5.6)
}
}

上面的代码会出现如下错误:

Error:(375, 9) Kotlin: Platform declaration clash: The following declarations have the same JVM signature (apply(Lkotlin/jvm/functions/Function4;)Ljava/lang/Object;):
fun <T> apply(calc: (String, Double, Double, Double) -> T): T defined in Sample.Test
fun <T> apply(calc: (String, List<Double>, Double, Double) -> T): T defined in Sample.Test

最佳答案

看来没有办法,因为Kotlin生成的泛型代码使用Function4作为参数类型。它是 4 个通用参数的接口(interface),因此无论类型如何,它们看起来都一样。

/** A function that takes 4 arguments. */
public interface Function4<in P1, in P2, in P3, in P4, out R> : Function<R> {
/** Invokes the function with the specified arguments. */
public operator fun invoke(p1: P1, p2: P2, p3: P3, p4: P4): R
}

关于Kotlin 声明冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49008615/

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