Java:如何根据对象的类型动态创建指定类型的数组?

我想获取一个传递的列表,该列表我知道是同构的,并从中创建一个与其中的元素类型相同的数组。

就像是…

List<Object> lst = new ArrayList<Object>;

lst.add(new Integer(3));

/// somewhere else ...

assert(my_array instanceof Integer[]);

回答:

转换将在运行时发生,而类型在编译时丢失。因此,您应该执行以下操作:

public <T> T[] toArray(List<T> list) {

Class clazz = list.get(0).getClass(); // check for size and null before

T[] array = (T[]) java.lang.reflect.Array.newInstance(clazz, list.size());

return list.toArray(array);

}

但是请注意,上面的第三行可能会引发异常-它不是类型安全的。

以上是 Java:如何根据对象的类型动态创建指定类型的数组? 的全部内容, 来源链接: utcz.com/qa/421413.html

回到顶部