0

我正在尝试编写一个打印整数或字符数组的通用方法printAll 。这是代码:

public static void main(String[] args) {
    char cArray[] = {'a','b','c','d'};
    int iArray[] = {1,2,3,4};
    printAll(iArray);    // Error at this line--refer below the code

}

public static <T> void printAll(T[] t){
   for(T x:t) {
        System.out.println(x);
    }

}

错误:线程“main”中的异常 java.lang.RuntimeException:无法编译的源代码 - 错误的树类型:<.any>

4

6 回答 6

7

printAll(T[] t)不接受原始类型数组。您需要传递相应包装器类型的数组:

Character cArray[] = {'a','b','c','d'};
Integer iArray[] = {1,2,3,4};

但是,您不需要构建自己的方法。只需使用已经存在的 -Arrays.toString()方法,该方法为不同类型的原始数组和Object[]数组重载。

于 2013-10-10T17:11:41.817 回答
7

不要重新发明轮子,使用Arrays.toStringArrays.deepToString。前者已经被重载以支持原始数组(如接收 a 的第一个链接中所述char[]),后者仅适用于类引用对象的数组。

于 2013-10-10T17:11:50.793 回答
1

您不能将原始类型与泛型一起使用。使用Integer(或相应的引用类型)

Integer iArray[] = {1,2,3,4};
printAll(iArray);   

您始终可以printAll为每个原始类型重载方法。

于 2013-10-10T17:11:53.027 回答
1

我不相信让人们为他们工作,更多的是告知和教导如何做到这一点。

在java中打印数组的一种简单方法是将数组转换为字符串然后打印。这最适合作为数组列表。然后可以对其进行操作以以更好的格式打印。

例如制作一个数组列表并添加一些值:

ArrayList<String> Array = new ArrayList<String>();
Array.add(1)
Array.add(2)
Array.add(3)
Array.add(4)
Array.add(5)

然后从这里可以通过将其更改为字符串来打印:

String str = Array.toString()
System.out.println(str);

这将打印以下内容:

[1,2,3,4,5]

然后,您可以在打印之前通过在字符串上使用 replaceALL 来更改其格式:

String str = Array.toString().replaceAll("[\\[\\]]","")

这将给出:

1,2,3,4,5

差不多就是这样,从这里你可以添加额外的东西,比如 System.lineSeparator,你可以用它来替换 "," 为一个新行。

String str = Array.toString().replaceAll("[\\[\\]]","").replaceAll(",",System.lineSeparator());

这将使它像这样打印出来:

1
2
3
4
5
于 2015-05-15T10:09:04.670 回答
0
class Generic {
    public static<T> void printArray(T[] list) {
        for(T in : list) {
            System.out.println(in);
        }
    }

    public static void main(String[] args) {
        String[] lit=new String[3];
        lit[0]="aiq";
        lit[1]="abusov";
        lit[2]="java";
        printArray(lit);
    }   
}
于 2020-04-14T08:54:51.733 回答
0

在此示例中,函数printArray将类型的通用数组作为输入T[]

public static <T> void printArray(T[] inputArray) {
    for (T element : inputArray) {
        System.out.println(element);
    }
}

在函数内部有一个简单的 for 循环,它打印数组中的元素,直到没有剩余元素为止。

于 2020-08-26T16:14:54.980 回答