Je vois que certaines solutions ont été fournis mais pas les causes, donc je vais vous expliquer cela en détail car je crois qu'il est aussi important de savoir que faisiez-vous le mal que juste pour obtenir "quelque chose" qui fonctionne à partir de la donnée des réponses.
Tout d'abord, voyons ce que l'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.
Il peut ne pas sembler important, mais comme vous allez le voir, il est... Si ce n'est la ligne suivante à l'échec? Tout objet dans la liste de chaînes de caractères, mais il ne convertit pas, pourquoi?
List<String> tList = new ArrayList<String>();
tList.add("4");
tList.add("5");
String tArray[] = (String[]) tList.toArray();
Sans doute, beaucoup d'entre vous pense que ce code est en train de faire la même chose, mais il ne le fait pas.
Object tSObjectArray[] = new String[2];
String tStringArray[] = (String[]) tSObjectArray;
Alors qu'en réalité, le code écrit est en train de faire quelque chose comme cela. La javadoc est dire! Il sera démarrent des instances d'un nouveau tableau, ce qu'il en sera de des Objets!!!
Object tSObjectArray[] = new Object[2];
String tStringArray[] = (String[]) tSObjectArray;
Donc tList.toArray est l'instanciation d'un objet et non des Chaînes de...
Par conséquent, la solution naturelle qui n'a pas été mentionner dans ce fil, mais c'est ce que l'Oracle recommande est la suivante
String tArray[] = tList.toArray(new String[0]);
J'espère que c'est assez clair.