在Java集合框架,收集口宣布以下方法:

<T> T[] toArray(T[] a)

返回的一个阵列含有的所有元素,在这个收集;运行时型的返回阵列,指定阵列。如果收集指定的阵列,它返回其中。否则,一个新的阵列的分配是与运行时的类型的指数组的大小和这个集合。

如果你想来实施这种方法,你会如何建立一系列的类型 一个, ,只知道在运行时?

有帮助吗?

解决方案

使用静态的方法

java.lang.reflect.Array.newInstance(Class<?> componentType, int length)

一教程对其使用可以在这里找到:http://java.sun.com/docs/books/tutorial/reflect/special/arrayInstance.html

其他提示

如何通过。做的:

public <T> T[] toArray(T[] a) {
    if (a.length < size)
        a = (T[])java.lang.reflect.Array.newInstance(a.getClass().getComponentType(), size);
    System.arraycopy(elementData, 0, a, 0, size);
    if (a.length > size)
        a[size] = null;
    return a;
}
Array.newInstance(Class componentType, int length)

创建一个新的系列一般类型的(这是唯一已知在运行时),就必须创建一系列的对象,并简单地转换为通用类型,然后用作这样的。这是一个限制的仿制药实施的Java(删除).

T[] newArray = (T[]) new Object[X]; // where X is the number of elements you want.

该函随后将列定(a)和使用它(检查它的大小前)或者创建一个新。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top