다음 코드 단편은 유닛 테스트에서이 코드를 실행할 때 의미가 있습니다. '>>>>'로 표시된 줄에서 ClassCastException (Object는 String으로 캐스트 할 수 없음)을 얻습니다. 이러한 유형의 작업을 일반 작업에서 수행 할 수 있습니까?Java generics 및 배열
public class ArrayUtils<E> {
public static <E> E[] appendToArray(E[] array, E item) {
E[] result = (E[])new Object[array.length+1];
for(int i=0; i < array.length; i++) {
result[i] = array[i];
}
result[result.length-1] = item;
return result;
}
}
@Test
public void testAppendToArray() {
String[] array = new String[1];
array[0] = "a";
assertSame("Array is not correct length.", 1, array.length);
>>>> String[] appendToArray = ArrayUtils.<String>appendToArray(array, "b");
assertSame("Array is not correct length.", 2, appendToArray.length);
}
어떤 이유로이'E는 [] 결과 = (E []) 새 개체가 있습니까 [사항 Array.length + 1]; ''E [] result = new E [array.length + 1];'(Java Generics를 많이 수행하지는 않았지만 아마도 금지되어있을 것입니다.) –
@ Noon Silk, E는 클래스가 아니기 때문에 금지됩니다. 그러나 TypeParameter. –
솔직히 참조 배열을 남겨 두십시오. –