所以我想知道如何创建一个泛型方法,当传递给定类型的数组时,将返回相同类型的数组。我正在使用的代码目前看起来像这样:
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 []数组,它会对它进行排序并返回一个String []的数组? (等等实现Comparable的任何其他类型)
答案 0 :(得分:2)
从根本上说,Java方法不能返回多种类型。您可以返回一个泛型类型,对象,并在调用函数中输入它。
答案 1 :(得分: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);
}
}
}