7

我正在这样做:

(String[]) myTreeSet.toArray();

但这在运行时给了我一个 ClassCastException 。

我唯一能想到的就是先创建一个数组,然后遍历 myTreeSet 中的每个元素并将其添加到数组中。似乎必须有比这更好的方法。有没有或者我应该这样做?

谢谢。

4

2 回答 2

20
String[] result = myTreeSet.toArray(new String[myTreeSet.size()]);
于 2012-02-12T06:19:34.480 回答
3

使用toArray()时会发生以下情况:通过 using 分配一个新的 Object 数组,new Object[size]并且该数组中的每个元素都将是对您的字符串元素之一的引用。即使实际上指向字符串,它也是一个类型为 的数组Object

使用toArray(T[] a)时会发生以下情况:正在使用分配新的 T 数组

java.lang.reflect.Array
              .newInstance(a.getClass().getComponentType(), size) 

并且数组中的每个都将是对您的字符串之一的引用,因为在您的情况下a.getClass().getComponentType将返回String.class。这一次,它是一个字符串类型的数组。

于 2012-02-12T10:59:27.513 回答