Saya melihat bahwa beberapa solusi telah disediakan tetapi tidak ada sebab-sebab, jadi saya akan menjelaskan ini secara terperinci karena saya percaya penting untuk mengetahui kesalahan apa yang Anda lakukan hanya untuk mendapatkan "sesuatu" yang bekerja dari balasan yang diberikan.
Pertama, mari kita lihat apa yang dikatakan Oracle
* <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.
Ini mungkin tidak terlihat penting tetapi seperti yang Anda lihat ... Jadi, apa yang gagal dilakukan oleh baris berikut? Semua objek dalam daftar adalah String tetapi tidak mengubahnya, mengapa?
List<String> tList = new ArrayList<String>();
tList.add("4");
tList.add("5");
String tArray[] = (String[]) tList.toArray();
Mungkin, banyak dari Anda akan berpikir bahwa kode ini melakukan hal yang sama, tetapi tidak.
Object tSObjectArray[] = new String[2];
String tStringArray[] = (String[]) tSObjectArray;
Padahal pada kenyataannya kode tertulis melakukan sesuatu seperti ini. Javadoc mengatakannya! Ini akan membuat array baru, apa itu akan menjadi Objek !!!
Object tSObjectArray[] = new Object[2];
String tStringArray[] = (String[]) tSObjectArray;
Jadi tList.toArray adalah instantiating Objects dan bukan Strings ...
Oleh karena itu, solusi alami yang belum disebutkan di utas ini, tetapi itulah yang direkomendasikan Oracle sebagai berikut
String tArray[] = tList.toArray(new String[0]);
Semoga cukup jelas.