将int []传递给采用T []的泛型方法

时间:2011-03-15 06:18:05

标签: java arrays generics

public static void main(String args[])
{

    int[] intarray = {1, 3, 6, 8, 2, 6};        
    String[] names = {"String1", "String2", "String3", "String4", "String5", "String6"};

    printMe(intarray);

}

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

}

为什么编译此代码会导致此错误?

The method printMe(T[]) is not applicable for the arguments (int[])

如果我做printMe(names)那么它就可以了。

3 个答案:

答案 0 :(得分:4)

因为它的数组int不是Integer,所以它期待那里的课程

答案 1 :(得分:1)

简单。泛型适用于基于Object的数据类型,而不适用于primitives

答案 2 :(得分:1)

简单。泛型用于基于对象的数据类型,而不用于基元。 在String数组的情况下,它是类型转换为对象类型,如果int数组自动它不被转换为Object类型,所以要么明确地包含另一个方法或使其成为Integer。