两种创建通用数组的方法

Jin*_*won 4 java arrays generics

我学习了两种创建泛型数组的方法.

一个是

@SuppressWarnings("unchecked")
static <T> T[] array1(final Class<T> elementType, final int size) {

    return (T[]) Array.newInstance(elementType, size);
}
Run Code Online (Sandbox Code Playgroud)

另一个是

static <T> T[] array2(final Class<T[]> arrayType, final int size) {

    return arrayType.cast(Array.newInstance(arrayType.getComponentType(), size));
}
Run Code Online (Sandbox Code Playgroud)

哪个更好?它们是相同的(内部)吗?有没有什么事实错?

Chr*_*ung 6

在幕后,两者有效地做同样的事情,除了在选项1中你传入T的类对象和在选项2中传入T[]的类对象.

我更喜欢选项1,因为它更短更容易阅读.然后,它Array.newInstance与添加的强制转换相同,所以我不确定您的方法是否会增加很多价值.:-)