java - 创建泛型数组的两种方法

标签 java arrays generics

我学习了以下两种创建通用数组的方法。

一个是

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

    return (T[]) Array.newInstance(elementType, size);
}

还有一个是

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

    return arrayType.cast(Array.newInstance(arrayType.getComponentType(), size));
}

哪个更好?它们(内部)相同吗?任何情况实际上都是错误的吗?

最佳答案

在幕后,两者实际上做同样的事情,除了在选项 1 中你传递了 T 的类对象,而在选项 2 中你传递了 T [] 的类对象。

我更喜欢选项 1,因为它更短且更易于阅读。再一次,它与添加了强制转换的 Array.newInstance 相同,因此我不确定您的方法是否增加了很多值(value)。 :-)

关于java - 创建泛型数组的两种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17204788/

相关文章:

java - 在哈希码方法中使用 ^ 的原因是什么?

java - 一般如何从 ResultSet 中获取值?

arrays - 如何按顺时针顺序排列 3d 点?

c# - 泛型:如何检查 T 的确切类型,没有 T 的对象

java - 有没有办法在调用泛型/参数化方法时强制提供类型参数?

java - API向Retrofit返回404

java - 将 JList 值从 JFrame 传递到 JDialog

java - 如何在Java中将通用列表转换为通用数组?

java - 如何像Android中的response一样设置数组对象的顺序?

c - 从数组中输入几个数字,每个数字检查是否为整数