【发布时间】:2019-07-25 22:12:20
【问题描述】:
我正在尝试创建一个通用函数,该函数接受一个未知类型的数组并将其翻转。它不返回任何内容,并且应该将对数组的引用传递给函数。
我尝试过使用可变参数:
public static <Unknown> void reverseArray(Unknown... a){
Unknown t;
for(int i=0;i<a.length/2;i++){
t = a[i];
a[i] = a[a.length - i - 1];
a[a.length - i - 1] = t;
}
}
但这不适用于原始数据,因为 java 似乎没有传入对数组的引用 我试过对象[]
public static void reverseArray(Object[] a){
Object t;
for(int i=0;i<a.length/2;i++){
t = a[i];
a[i] = a[a.length - i - 1];
a[a.length - i - 1] = t;
}
}
但是当我通过 int[] java 时说它不适用于参数 (int[])
与泛型相同:
public static <Unknown> void reverseArray(Unknown[] a){
Unknown t;
for(int i=0;i<a.length/2;i++){
t = a[i];
a[i] = a[a.length - i - 1];
a[a.length - i - 1] = t;
}
}
【问题讨论】:
-
如果你想走这条路,我认为你需要使用基元的类版本(
Integer而不是int)而不是原语。 -
stackoverflow.com/questions/2721546/… 看看这个答案,因为它可以帮助你了解为什么你不能这样做