我正在这样做:
(String[]) myTreeSet.toArray();
但这在运行时给了我一个 ClassCastException 。
我唯一能想到的就是先创建一个数组,然后遍历 myTreeSet 中的每个元素并将其添加到数组中。似乎必须有比这更好的方法。有没有或者我应该这样做?
谢谢。
String[] result = myTreeSet.toArray(new String[myTreeSet.size()]);
使用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
。这一次,它是一个字符串类型的数组。