是否有可能拥有多个名称相同但带有不同列表类型的方法。这当然通过重写定期工作,但java无法区分两种不同的List类型。除了拥有不同的名字之外,有没有办法解决这个问题?例如:java采用不同的列表类型,使用相同的方法名称
/**
* Prints a given in list, only works on numerical types
*/
public static void printList(List list) {
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i));
if (i != list.size() - 1) System.out.print(", ");
}
System.out.println();
}
,如果我们在同一个班级有
/**
* Prints a given in list of Vector3i
*/
public static void printList(List<Vector3i> list) {
for (int i = 0; i < list.size(); i++) {
System.out.print("(");
System.out.print(list.get(i).x);
System.out.print(", ");
System.out.print(list.get(i).y);
System.out.print(", ");
System.out.print(list.get(i).z);
System.out.print(")");
if (i != list.size() - 1) System.out.print(", ");
}
System.out.println();
}
是行不通的。
你不应该使用'List'。它基本上是**原始类型**。这意味着你的第一个方法将采用任何继承Object的类型。所以你的两个方法都可以把'Type'' Vector3i'作为类型。所以有碰撞。 – Blip