gpt4 book ai didi

kotlin - 为什么不能使用名称相同但泛型不同的方法呢?

转载 作者:行者123 更新时间:2023-12-02 13:38:33 24 4
gpt4 key购买 nike

我是Kotlin语言的新手,但是我遇到了一些其他语言没有的奇怪行为,所以我想问为什么我不能做这样的事情:

fun <T> methodName()
{
// whatev~
}

fun <T, K> methodName()
{
// whatev~
}

此代码引发“冲突重载”错误。

在其他语言中,例如C#,我可以做到这一点,并且只有一种方法可以同时对一种或多种类型起作用,这是一个非常巧妙的技巧。

我发现的唯一解决方法是在每个新方法中添加一个我将永远不会使用的可选参数,例如:
fun <T> methodName()
{

}

fun <T, K> methodName(crappyParam: String = "")
{

}

最佳答案

这两个方法在JVM类型系统中具有相同的签名(不支持泛型),这是不允许的。

JVM语言可能会“破坏”此类方法,例如在字节码中给它们提供不同的名称。必须使用C#的JVM实现。

但是 Kotlin 没有。这样做会损害与Java的互操作性,这是Kotlin的主要要求之一。

关于kotlin - 为什么不能使用名称相同但泛型不同的方法呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49935282/

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