列表的通用方法字符串和Java中的String []列表,或T列表和T []列表

问题描述 投票:1回答:1

我尝试编写一个通用方法来打印:

  1. 元素列表,例如Integer,String等列表。
  2. 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方法吗?

java arrays list generics overloading
1个回答
2
投票

在运行时,您的List<T>List<T[]>完全相同,因为编译器已擦除泛型类型。因此两个方法都具有相同的签名,并且您编译错误。要修复它,只需为其中一个方法指定一个不同的名称。

查看更多关于擦除概念What is the concept of erasure in generics in Java?Java spec

© www.soinside.com 2019 - 2024. All rights reserved.