如何调用泛型类型T []作为参数的方法?

时间:2014-03-17 01:31:58

标签: java

好的,我说这个方法标题:
public static <T extends Comparable<T>> void qSort(T[] a, int p, int q)

说我希望T [] a持有{5,2,7,3,8,9}。我如何创建这个T [] a,如果我想测试它,我将如何调用此方法?我有点困惑。

我已尝试更新我的问题以使其更清晰。如果不清楚,请发表评论。

什么吗?

3 个答案:

答案 0 :(得分:1)

Java有一个名为autoboxing功能。你的例子看起来像是

qSort( new Integer[]{5,2,7,3,8,9}, p, q)

请注意,该数组不是基于基本类型int,但内部的int值是&#34; autoboxed&#34;由编译器自动进入Integer。由于Integer实现了Comparable,这应该可行。

答案 1 :(得分:1)

qSort( new Integer[] { 5,2,7,3,8,9 }, 0, 5 );

需要注意的重要一点是,第一个参数的类型是Integer[],而不是int[]

答案 2 :(得分:1)

首先要做的事情是:你不能使用原始数组来保存对象数组中预期的元素;他们是不兼容的类型。

请记住,泛型类型参数T 总是一个Object(就其边界而言)。如果你想在那里得到任何类型的数字引用,那么你也应该被绑定到Number(这是所有数字包装类的超类)。

public static <T extends Number & Comparable<T>> void qSort(T[] a, int p, int q)

现在,对于你要传入的数组......它必须是Integer s而不是int[]的数组。

Integer[] vals = new Integer[]{5,2,7,3,8,9};

由于自动装箱,上述情况可能发生,int assignment compatibleInteger

现在,如果你想调用它,你现在将必要的参数传递给它。

qsort(vals, 0, 10);  // for instance