重载两个列表的Java方法
我想问一下,如何像这样重载java方法:
public static int printAll(List<Class1> list) {
int i = 0;
for (Class1 e: list) {
System.out.println(e.getName());
}
return i;
}
public static int printAll(List<Class2> list) {
int i = 0;
for (Class2 e: list) {
System.out.println(e.getName());
}
return i;
}
Class1
和Class2
都实现了方法getName()
多谢各位
# 1 楼答案
在java中,泛型类型在运行时不存在,它们被称为
Type Erasure
的东西擦除。因此,定义两个这样的方法会给您一个编译时错误,即两个方法相互冲突并且both have the same erasure
。然而,如果你想这样做,有一些方法可以做到这一点。其中一个已经在@Lungu Daniel的答案中。您还可以将List<Class2> list
个参数更改为其他集合类型,如下所示:# 2 楼答案
调用者必须为如何从列表中的对象获取名称传递额外的参数,这是否可以接受?您可以使用以下内容:
然后,您可以将其称为:
或:
# 3 楼答案
为Class1和Class2创建一个接口并实现它
并在方法签名中使用它