Java 使泛型数组返回与其参数相同类型的数组';过去了

Java 使泛型数组返回与其参数相同类型的数组';过去了,java,generics,Java,Generics,所以我想知道如何创建一个泛型方法,当传递一个给定类型的数组时,它将返回一个相同类型的数组。我目前使用的代码如下所示: 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 =

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

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;
 }
}
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);
        }
    }

}
公共类InsertionSort扩展排序
{
公共T[]排序(T[]数据)
{
for(int index=1;index0&&数据[position-1]。比较(键)>0)
{
数据[位置]=数据[位置-1];
位置--;
}
数据[位置]=键;
}
返回数据;
}
}

问题是:当我将一个Integer[]数组作为参数传递给这个方法时,它返回的数据是一个基本的Comparable[]或Object[]数组,而不是一个Integer[]。是否有一种方法可以更改它,使其在传递整数[]数组时排序并返回整数[]数组,但在传递字符串[]数组时排序并返回字符串[]数组?(对于实现Compariable的任何其他类型也是如此)

基本上,Java方法不能返回多个类型。您可以在调用函数中返回泛型类型、对象和类型强制转换。

使用它可能有点不方便,但您可以执行以下操作:

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;
 }
}
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);
        }
    }

}
公共类MyClass{
公共K[]getMe(K[]obj){
返回obj;
}
公共静态void main(字符串[]args){
MyClass c=新的MyClass();
整数[]b={1,2,3};
整数[]d=c.getMe(b);
for(整数i:d){
系统输出打印LN(i);
}
}
}

您所说的“它将数据重新返回为基本的可比较[]或对象[]数组”是什么意思?看见我同意上面的评论。这段代码始终返回我传递给它的类型。如何实例化类并调用sort方法?啊,在调用函数中强制转换它!当然我总是忘记做那件事。谢谢