Я вижу, что были предоставлены некоторые решения, но не какие-либо причины, поэтому я объясню это подробно, так как считаю, что так же важно знать, что вы делали неправильно, просто чтобы получить «что-то», которое работает из данных ответов.
Сначала посмотрим, что скажет 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;
Когда на самом деле написанный код делает что-то вроде этого. Javadoc говорит это! Он установит новый массив, каким он будет из объектов !!!
Object tSObjectArray[] = new Object[2];
String tStringArray[] = (String[]) tSObjectArray;
Таким образом, tList.toArray создает экземпляры объектов, а не строк ...
Поэтому естественное решение, которое не упоминалось в этой теме, но это то, что Oracle рекомендует, заключается в следующем
String tArray[] = tList.toArray(new String[0]);
Надеюсь, это достаточно ясно.