public void expand(???, int number) {
array = java.util.Arrays.copyOf(array, array.length + number);
}
在" ???",我想接受任何类型的数组。解决方案是否属于通用类型?
答案 0 :(得分:1)
如果通过"任何阵列"你的意思是一个对象数组(例如String[]
)和一个基元数组(例如int[]
),然后泛型不会帮助你,你唯一的选择就是{{1并验证它是一个数组。
Object
<强>更新强>
但是,由于您只是想要一种方便的方法来调用public void expand(Object array, int number) {
if (! array.getClass().isArray())
throw new IllegalArgumentException("Not an array");
int arrayLen = Array.getLength(array);
// Sample methods for accessing array
Class<?> arrayValueClass = array.getClass().getComponentType(); // E.g. int.TYPE
int firstInt = Array.getInt(array, 0); // Assumes array is int[]
Object firstVal = Array.get(array, 0); // Always works. Primitives are boxed
}
,因此您最好的解决方案是实现10个版本的copyOf
,每个版本的expand
一个,如果您不喜欢#39;需要支持所有原始数组类型:
copyOf
答案 1 :(得分:0)
Integer[] array = {1,2,3};
array = expand(array, 10);
System.out.println(array.length);
public <T> T[] expand(T[] array, int number) {
array = java.util.Arrays.copyOf(array, array.length + number);
return array;
}