Kotlin 中的重载方法会生成下一个错误 平台声明冲突:以下声明具有相同的 JVM 签名

ras*_*vap 4 overloading kotlin

你好,我在 Kotlin 中定义了两个方法,我的想法是重载方法并获取不同类型的参数。

接下来是我的方法:

private fun methodOverloaded(singleList: List<Tool>, mkUrl: String?, commentStyle: String, resultsPageUri: String?, githubCommentExperiment: String){

}

private fun methodOverloaded(singleList: List<GroupedTool>, mkUrl: String?, commentStyle: String, resultsPageUri: String?, githubCommentExperiment: String){

}
Run Code Online (Sandbox Code Playgroud)

我有两种带有 type 参数的方法List<Tool>和另一种List<GroupedTool>方法,但 JVM 发送错误,指出数据类型相同,即使它们是不同类型的 List,不确定在 Kotlin 或 Java 中是否可以做到这一点。

有任何想法吗?

Lou*_*man 7

您可以在 Kotlin 中通过注释很好地完成此操作。

@JvmName("toolListMethod")
private fun methodOverloaded(singleList: List<Tool>, mkUrl: String?, commentStyle: String, resultsPageUri: String?, githubCommentExperiment: String){

}
@JvmName("groupedToolListMethod")
private fun methodOverloaded(singleList: List<GroupedTool>, mkUrl: String?, commentStyle: String, resultsPageUri: String?, githubCommentExperiment: String){

}
Run Code Online (Sandbox Code Playgroud)

只有 JVM,而不是 Kotlin,存在擦除冲突的问题。