【发布时间】:2015-08-10 19:52:13
【问题描述】:
我有一个实用程序class:
public class ArrayUtils {
public static <T> T[] concat(T[]... arrays) {
if(arrays == null) {
return null;
}
int size = 0;
for(T[] array : arrays) {
size += array.length;
}
T[] concatenatedArray = (T[]) new Object[size];
int i = 0;
for(T[] array : arrays) {
for(T item : array) {
concatenatedArray[i++] = item;
}
}
return concatenatedArray;
}
}
当我测试concat时,它崩溃了:
public class ArrayUtilsTest extends TestCase {
public void testConcat() throws Exception {
Integer[] first = new Integer[]{1,2,3};
Integer[] second = new Integer[]{4,5,6};
Integer[] concat = ArrayUtils.concat(first, second);
assertEquals(6, concat.length);
}
}
带有消息
java.lang.ClassCastException: java.lang.Object[] 无法转换为 java.lang.Integer[]
我想这与泛型有关。你能提供使它工作的建议吗?此外,这个问题的背景会很棒。
谢谢!
【问题讨论】:
-
请不要手动复制数组,使用 System.arraycopy()。