Ich sehe, dass einige Lösungen bereitgestellt wurden, aber keine Ursachen, daher werde ich dies ausführlich erläutern, da ich glaube, dass es genauso wichtig ist zu wissen, was Sie falsch gemacht haben, nur um "etwas" zu erhalten, das aus den gegebenen Antworten funktioniert.
Lassen Sie uns zunächst sehen, was Oracle zu sagen hat
* <p>The returned array will be "safe" in that no references to it are
* maintained by this list. (In other words, this method must
* allocate a new array even if this list is backed by an array).
* The caller is thus free to modify the returned array.
Es mag nicht wichtig aussehen, aber wie Sie sehen werden, ist es ... Also, was schlägt die folgende Zeile fehl? Alle Objekte in der Liste sind Zeichenfolgen, werden jedoch nicht konvertiert. Warum?
List<String> tList = new ArrayList<String>();
tList.add("4");
tList.add("5");
String tArray[] = (String[]) tList.toArray();
Wahrscheinlich würden viele von Ihnen denken, dass dieser Code dasselbe tut, aber das tut er nicht.
Object tSObjectArray[] = new String[2];
String tStringArray[] = (String[]) tSObjectArray;
In Wirklichkeit macht der geschriebene Code so etwas. Der Javadoc sagt es! Es wird ein neues Array initiieren, was es von Objekten sein wird !!!
Object tSObjectArray[] = new Object[2];
String tStringArray[] = (String[]) tSObjectArray;
Also instanziiert tList.toArray ein Objekt und keine Zeichenfolgen ...
Daher ist die natürliche Lösung, die in diesem Thread nicht erwähnt wurde, aber von Oracle empfohlen wird, die folgende
String tArray[] = tList.toArray(new String[0]);
Hoffe es ist klar genug.