java泛型:无法创建简单的打印数组方法

时间:2014-12-30 13:21:46

标签: java arrays generics printing

所以我继续在下一个代码上出错。我不知道我做错了什么。 错误是main类型的方法printArray(T [])不适用于参数(int [])

public class main {

    public static void main(String[] args) {
        Oefening1 oef = new Oefening1();
        int[] integerArray = {1,2,3,4,5};
        printArray(integerArray);
    }

    public static <T> void printArray(T[] arr){
        for(T t: arr){
           System.out.print(t + " ");
        }
        System.out.println("");
    }

}

2 个答案:

答案 0 :(得分:0)

在泛型方面,Java对原始类型和从java.lang.Object派生的类型有所区别。只有非基本类型才能用作泛型方法的参数。由于int不是通用的,printArray<T>不适用于此。

您可以通过为int提供重载或将integerArray设为Integer[]来解决此问题:

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

Demo.

这样做的原因是Integerint包装在适合传递给泛型的对象中。但是,这会从Java编译器中获得很多帮助,因为当您编写{1,2,3,4,5}时,它会在场景后面转换为{Integer.valueOf(1), Integer.valueOf(2), Integer.valueOf(3), Integer.valueOf(4), Integer.valueOf(5)}

答案 1 :(得分:0)

因为您使用的是原始类型的数据类型。如果使用Integer [] integerArray = {1,2,3,4,5};而不是int [] integerArray = {1,2,3,4,5};。它应该工作。