【发布时间】:2019-03-05 17:44:57
【问题描述】:
我尝试写一个通用的打印方法:
- 元素列表,例如 Integer、String 等列表。
- T[] 列表,例如
List<String[]>, List<Integer[]>等。
我有以下两种方法:
public static <T> void printList(List<T> list){
for(T n : list) {
System.out.print("[" + n + "]");
}
}
public static <T> void printList(List<T[]> list){
for(T[] arr: list) {
for(T n : arr){
System.out.print("[" + n + "]");
}
}
}
我得到编译错误:
public static <T> void printList(List<T[]> list){
where T#1,T#2 are type-variables:
T#1 extends Object declared in method <T#1>printList(List<T#1[]>)
T#2 extends Object declared in method <T#2>printList(List<T#2>)
有什么方法可以为List<T> 和List<T[]> 提供方法printList?
【问题讨论】:
-
你不能有多个具有相同签名的方法。您需要更改其中之一的名称或参数。
-
This question over the software engineering stack 在更一般的设计意义上可能对您有所帮助。
-
根据经验,不要混合泛型和数组。
标签: java arrays list generics overloading