繁体   English   中英

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

[英]How do I call a method with a generic type T[] as an argument?

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

假设我想让T [] a保持{5,2,7,3,8,9}。 我将如何创建此T [] a,如果要测试该方法,将如何调用该方法? 我有点困惑。

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

有什么事吗

Java具有称为自动装箱功能 你的例子看起来像

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

请注意,该数组不是基于原始类型int ,而是内部的int值由编译器自动“自动装箱”为Integer 由于Integer实现了Comparable ,这应该可以工作。

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

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

首先,您不能使用原始数组来保存对象数组中期望的元素; 它们是不兼容的类型。

请记住,泛型参数T 始终是一个Object (相对于其边界)。 如果要在其中获取任何类型的数字引用,则还应将其绑定到Number (它是所有数字包装器类的超类)。

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

现在,对于要传递的数组,它必须是Integer的数组,而不是int[]

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

由于自动装箱,上述操作是可能的,并且intInteger 分配兼容

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM