好的,我说这个方法标题:
public static <T extends Comparable<T>> void qSort(T[] a, int p, int q)
说我希望T [] a持有{5,2,7,3,8,9}。我如何创建这个T [] a,如果我想测试它,我将如何调用此方法?我有点困惑。
我已尝试更新我的问题以使其更清晰。如果不清楚,请发表评论。
什么吗?
答案 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 compatible为Integer
。
现在,如果你想调用它,你现在将必要的参数传递给它。
qsort(vals, 0, 10); // for instance