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[] 配列をこのメソッドにパラメーターとして渡すと、Integer[] ではなく、基本的な Comparable[] または Object[] 配列としてデータが返されます。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 に答える