Je vois que certaines solutions ont été fournies mais pas de cause, je vais donc expliquer cela en détail car je pense qu'il est aussi important de savoir ce que vous faisiez de mal que juste pour obtenir "quelque chose" qui fonctionne à partir des réponses données.
Voyons d'abord ce qu'Oracle a à dire
* <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.
Cela peut ne pas sembler important, mais comme vous le verrez, alors ... Qu'est-ce que la ligne suivante échoue? Tous les objets de la liste sont String mais il ne les convertit pas, pourquoi?
List<String> tList = new ArrayList<String>();
tList.add("4");
tList.add("5");
String tArray[] = (String[]) tList.toArray();
Beaucoup d'entre vous penseraient probablement que ce code fait de même, mais ce n'est pas le cas.
Object tSObjectArray[] = new String[2];
String tStringArray[] = (String[]) tSObjectArray;
Quand en réalité le code écrit fait quelque chose comme ça. Le javadoc le dit! Il va créer un nouveau tableau, ce que ce sera des objets !!!
Object tSObjectArray[] = new Object[2];
String tStringArray[] = (String[]) tSObjectArray;
Donc, tList.toArray instancie un objet et non une chaîne ...
Par conséquent, la solution naturelle qui n'a pas été mentionnée dans ce fil, mais c'est ce que recommande Oracle est la suivante
String tArray[] = tList.toArray(new String[0]);
J'espère que c'est assez clair.