Java方法重载错误

Java方法重载错误,java,jakarta-ee,Java,Jakarta Ee,我有一个getResult(),输入参数略有变化。一个Mapvalue作为字符串数组表示一个,字符串表示一个 但我看到了一个错误: 重载不支持泛型吗 public class App { public void getResult(Map<String, String[]> map) { } public void getResult(Map<String, String> map) { } 公共类应用程序 { 公共void getResult(映射){ } 公

我有一个getResult(),输入参数略有变化。一个Mapvalue作为字符串数组表示一个,字符串表示一个

但我看到了一个错误: 重载不支持泛型吗

public class App 
{

public void getResult(Map<String, String[]> map) {

}
public void getResult(Map<String, String> map) {

}
公共类应用程序
{
公共void getResult(映射){
}
公共void getResult(映射){
}
}

我看到了这个错误:方法getResult(Map)与类型App中的另一个方法具有相同的擦除getResult(Map) 我猜java只是把这两个都当作映射来对待,这个错误也是如此

模仿这种行为的最佳方法是什么


多亏了

重载规则之一是,具有类型参数的方法在擦除后不能具有相同的签名。看见规范中的相关文本为:

如果类型声明T有一个成员方法m1,并且存在一个在T中声明的方法m2或T的超类型,则这是一个编译时错误:。m1或某些方法m1覆盖(直接或间接)的签名与m2或某些方法m2覆盖(直接或间接)的签名具有相同的擦除


重载规则之一是,具有类型参数的方法在擦除后不能具有相同的签名。看见规范中的相关文本为:

如果类型声明T有一个成员方法m1,并且存在一个在T中声明的方法m2或T的超类型,则这是一个编译时错误:。m1或某些方法m1覆盖(直接或间接)的签名与m2或某些方法m2覆盖(直接或间接)的签名具有相同的擦除


方法参数只考虑对象的类型,而不考虑对象上存在的任何泛型。因此,具有映射参数的两个方法将被视为相同的,而不管它们的泛型类型如何。

方法参数只考虑对象的类型,而不考虑对象上存在的任何泛型。因此,无论其泛型类型如何,具有Map参数的两个方法都将被视为相同的。

我认为您需要重新格式化。yaa。。。有些部分是如何消失的。我重新格式化了我想你需要重新格式化耶。。。有些部分是如何消失的。我重新格式化了,那么,有什么方法可以做到这一点吗。有一半时间,我不需要字符串数组,有一半时间我需要它。因此,现在所有使用此代码的应用程序都必须编写代码来将单个字符串转换为字符串数组。有什么解决办法吗that@ravi-您可以为这些方法指定不同的名称。我认为,唯一的其他方法是更改参数的数量和/或类型(删除后)。例如(我不建议这样做,但我已经看到了,甚至在JavaAPI中),您可以向其中一个方法添加一个伪参数。有一半时间,我不需要字符串数组,有一半时间我需要它。因此,现在所有使用此代码的应用程序都必须编写代码来将单个字符串转换为字符串数组。有什么解决办法吗that@ravi-您可以为这些方法指定不同的名称。我认为,唯一的其他方法是更改参数的数量和/或类型(删除后)。例如(我不建议这样做,但我已经看到了,即使在JavaAPI中也是如此),您可以向其中一个方法添加一个伪参数。