将泛型数组传递给采用泛型数组的方法

时间:2015-11-04 21:33:08

标签: java arrays generics methods

我有一个Java方法,它作为输入,一个通用数组:

void insertionSort(T[] data) {

 T sortValuePointer;

   for (int i = 1; i < data.length; i++) {

       sortValuePointer = data[i];

        int j = i;

        while (j > 0 && compare(sortValuePointer,data[j - 1]) < 0) {

            data[j] = data[j - 1];

            j--;
        }

        data[j] = sortValuePointer;

    }

}

我有一个创建如下的数组:

   T[]  temp=  (T[]) Array.newInstance(t, 5);

将T类作为输入:

   Class<T> t;

insertSort方法位于InsertionSort类中。所以我无法拨打以下电话:

 insertionSort.insertionSort(temp);

我收到以下编译时错误:      线程“main”中的异常java.lang.Error:未解决的编译问题:

The method insertionSort(Integer[]) in the type InsertionSort<Integer> is not applicable for the arguments (T[])

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。问题是我正在使用特定类型创建父类!就我而言,这是:

InsertionSort<Integer> insertionSort = new InsertionSort<Integer>();

它应该是:

InsertionSort<T> insertionSort = new InsertionSort<T>();

这解决了它。