java如何调用泛型类型为T[]的方法作为参数?
好的,假设我有这个方法头:
public static <T extends Comparable<T>> void qSort(T[] a, int p, int q)
假设我想让T[]a保持{5,2,7,3,8,9}。我将如何创建这个T[]a,如果我想测试它,我将如何调用这个方法?我有点困惑
我试着更新我的问题,让它更清楚。如果有不清楚的地方,请发表评论
有什么事吗
你可以在下面搜索框中键入要查询的问题!
好的,假设我有这个方法头:
public static <T extends Comparable<T>> void qSort(T[] a, int p, int q)
假设我想让T[]a保持{5,2,7,3,8,9}。我将如何创建这个T[]a,如果我想测试它,我将如何调用这个方法?我有点困惑
我试着更新我的问题,让它更清楚。如果有不清楚的地方,请发表评论
有什么事吗
# 1 楼答案
首先:不能使用基元数组来保存对象数组中需要的元素;他们是不相容的类型
请记住,泛型类型参数
T
总是一个Object
(相对于其边界)。如果您想在其中获得任何类型的数值引用,那么还应该绑定到Number
(这是所有数值包装类的超类)现在,关于你将要通过的阵列。。。它必须是
Integer
的数组,而不是int[]
由于自动装箱,上述情况是可能的,并且
int
是assignment compatible与Integer
现在,如果你想调用它,你现在把必要的参数传递给它
# 2 楼答案
需要注意的重要一点是,第一个参数的类型是
Integer[]
,而不是int[]
# 3 楼答案
Java有一个名为autoboxing的特性。你的例子是
请注意,数组不是基于基元类型
int
,而是由编译器自动将其中的int
值“自动装箱”到Integer
。由于Integer
实现了Comparable
,这应该是可行的