Я бачу, що були запропоновані деякі рішення, але не будь-які причини, тому я поясню це докладно, оскільки я вважаю, що важливо знати, що ви робили неправильно, щоб просто отримати "щось", що працює з наведених відповідей.
Спочатку давайте подивимось, що має сказати 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.
Це може не виглядати важливо, але як ви побачите, що це ... Отже, що робить наступний рядок невдалим? Усі об'єкти у списку є String, але він не перетворює їх, чому?
List<String> tList = new ArrayList<String>();
tList.add("4");
tList.add("5");
String tArray[] = (String[]) tList.toArray();
Напевно, багато хто з вас подумає, що цей код робить те саме, але це не так.
Object tSObjectArray[] = new String[2];
String tStringArray[] = (String[]) tSObjectArray;
Коли насправді написаний код робить щось подібне. Яводок це каже! Він встановить новий масив, що це буде за Об'єкти !!!
Object tSObjectArray[] = new Object[2];
String tStringArray[] = (String[]) tSObjectArray;
Отже tList.toArray створює об'єкти, а не рядки ...
Тому природне рішення, яке не згадувалося в цій темі, але саме Oracle рекомендує, наступне
String tArray[] = tList.toArray(new String[0]);
Сподіваюся, це досить зрозуміло.