我想获取一个传递的列表,我知道它是同类的,并从中创建一个与其中元素类型相同的数组。
有点像...
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);
}
但请注意,上面的第 3 行可能会引发异常 - 它不是类型安全的。
关于Java:如何根据对象的类型动态创建指定类型的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3152290/