具有不同对类型的函数重载引发

问题描述 投票:0回答:1

所以我已经重载了如下功能:

fun putParams(vararg params: Pair<String, String>) {

}
fun putParams(vararg params: Pair<String, Int>) {

}

enter image description here您能推荐我避免这种错误的方法吗?

generics kotlin jvm overloading
1个回答
0
投票

[在Java中,关于通用性的Kotlin类型信息仅在编译时可用。在运行时,Pair<String, Int>Pair<String, String>对解释器都相同。因此,方法签名是重复的。

作为解决方案,我将创建两个单独的类型。

fun putParams(vararg params: StringPair) {..}
fun putParams(vararg params: StringAndIntPair) {..}

请参见Kotlin Type Erasure

© www.soinside.com 2019 - 2024. All rights reserved.