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

标签 java arrays

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

有点像...

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/

相关文章:

java - 水库采样算法

java - 从 Java 中的通用静态方法获取类名

java - JPA Hibernate 双向关系

函数末尾的 C++ 段错误。引用线 = 右大括号

c++ - 在 map C++ 中使用数组作为键

c# - 带有 if(array[i + 1]) 的 For 循环超出数组边界;如何循环到开头?

java - 如何直观地打印非二叉树?

java - 单击 JTable 中的一行时出现 NullPointerException

objective-c - 在此算法中填充 NSArray 的最佳方法

javascript - 循环并检查两个数组始终仅返回一个元素