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(): 新しいオブジェクト配列が使用によって割り当てられnew Object[size]、配列の各要素が文字列要素の 1 つへの参照になります。実際には文字列を指していても、それは 型の配列Objectです。

以下を使用toArray(T[] a)すると、新しい T 配列が割り当てられます。

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

配列からのそれぞれは、あなたの場合a.getClass().getComponentTypeに返されるため、文字列の1つへの参照になりString.classます。今回は String 型の配列です。

于 2012-02-12T10:59:27.513 に答える