0

所以我想知道如何创建一个泛型方法,当传递给定类型的数组时,将返回相同类型的数组。我目前正在使用的代码如下所示:

public class InsertionSort<T extends Comparable<T>> extends Sort<T>
{
 public T[] sort (T[] data)
 {
  for (int index = 1; index < data.length; index++)
  {
     T key = data[index];
     int position = index;

     /* Shift larger values to the right */
     while (position > 0 && data[position-1].compareTo(key) > 0)
     {
        data[position] = data[position-1];
        position--;
     }

     data[position] = key;
  }

  return data;
 }
}

问题:当我将一个 Integer[] 数组作为参数传递给此方法时,它会以基本 Comparable[] 或 Object[] 数组而不是 Integer[] 的形式返回数据。有没有办法改变它,如果它传递一个 Integer[] 数组,它会对其进行排序并返回一个 Integer[] 数组,但如果它传递一个 String[] 数组,它会对其进行排序并返回一个字符串 [] 的数组?(对于实现 Comparable 的任何其他类型,依此类推)

4

2 回答 2

2

从根本上说,Java 方法不能返回一种以上的类型。您可以返回泛型类型 Object,然后在调用函数中对其进行类型转换。

于 2012-11-13T02:23:27.773 回答
0

使用起来可能有点尴尬,但你可以这样做:

public class MyClass {

    public <K extends Comparable<K>> K[] getMe(K[] obj) {
        return obj;
    }

    public static void main(String[] args) {
        MyClass c = new MyClass();

        Integer[] b = {1,2,3};

        Integer[] d = c.getMe(b);

        for(Integer i : d) {
            System.out.println(i);
        }
    }

}
于 2012-11-13T21:14:22.520 回答