Java泛型和数组

Chr*_*son 0 java generics

当我针对单元测试运行时,下面的代码段仍然有意义.我在标有">>>>"的行上得到一个ClassCastException(Object不能转换为String).这种类型的操作可以通用吗?

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 );
    }
Run Code Online (Sandbox Code Playgroud)

Ale*_*exR 5

您不应该使用新的Object []创建数组.你应该使用Array.newInstance(Class clazz, int length).