私はこれをしていました:
(String[]) myTreeSet.toArray();
しかし、実行時に ClassCastException が発生します。
私が考えられる唯一のことは、最初に配列を作成してから、myTreeSet の各要素を繰り返し処理し、それを配列に追加することです。これよりも良い方法があるに違いないようです。ありますか、それともこれを行う必要がありますか?
ありがとう。
String[] result = myTreeSet.toArray(new String[myTreeSet.size()]);
次のことが起こる使用時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 型の配列です。