java泛型:can';t创建一个简单的打印数组方法

java泛型:can';t创建一个简单的打印数组方法,java,arrays,generics,printing,Java,Arrays,Generics,Printing,因此,我在下一个代码中不断出现错误。我不知道我做错了什么。 错误在于类型main中的printary(T[])方法不适用于参数(int[]) 公共类主{ 公共静态void main(字符串[]args){ Oefening1 oef=新Oefening1(); int[]整数数组={1,2,3,4,5}; 打印阵列(整数阵列); } 公共静态void打印数组(T[]arr){ 对于(T:arr){ 系统输出打印(t+“”); } System.out.println(“”); } } 对于泛型,

因此,我在下一个代码中不断出现错误。我不知道我做错了什么。 错误在于类型main中的printary(T[])方法不适用于参数(int[])

公共类主{
公共静态void main(字符串[]args){
Oefening1 oef=新Oefening1();
int[]整数数组={1,2,3,4,5};
打印阵列(整数阵列);
}
公共静态void打印数组(T[]arr){
对于(T:arr){
系统输出打印(t+“”);
}
System.out.println(“”);
}
}

对于泛型,Java在基本类型和从
Java.lang.Object
派生的类型之间起着重要作用。只有非基元类型可以用作泛型方法的参数。由于
int
不是泛型,
printArray
不适用于它

您可以通过为
int
提供重载,或使
integerArray
成为
Integer[]
来修复它:

Integer[] integerArray = {1,2,3,4,5};
printArray(integerArray);


这项工作的原因是
Integer
int
包装在一个适合传递给泛型的对象中。然而,这需要Java编译器的大量帮助,因为当您在幕后编写
{1,2,3,4,5}
时,它会被转换为
{Integer.valueOf(1),Integer.valueOf(2),Integer.valueOf(3),Integer.valueOf(4),Integer.valueOf(5)}
,这是因为您使用的是数据类型的基元类型。如果使用整数[]integerArray={1,2,3,4,5};而不是int[]integerArray={1,2,3,4,5};。它应该会起作用

Integer[] integerArray = {1,2,3,4,5};
printArray(integerArray);