Stavo lavorando su framework Collection in Java, dove ho riscontrato uno strano problema. Ho creato 2 elenchi di stringhe 1 con l'aiuto di ArrayList mentre il secondo è stato creato utilizzando Arrays.asList (T ...).Comportamento diverso durante la conversione di un elenco di stringhe in un array di stringhe
Dopo la creazione di questi due lista ho cercato di convertire queste liste in matrici di stringhe con la list.toArray(),
come list.toArray() chiamata al metodo restituisce un array oggetto, quindi ho dovuto lanciare esplicitamente String [].
Dopo la fusione qualche comportamento strano sta accadendo come:
Caso # 1: (in cui la lista è stata creata usando ArrayList), dà eccezione di runtime come java.lang.ClassCastException: [Ljava.lang.Object; non può essere lanciato su [Ljava.lang.String;
Caso 2: (dove l'elenco creato utilizzando Arrays.asList (T ...)) funziona correttamente.
Ecco il codice
String [] str = null ,str1 = null ;
List<String> list = new ArrayList<String>();
list.add("a");
List<String> list1 = Arrays.asList("a");
str = (String[]) list.toArray(); // Runtime Exception
str1 = (String[]) list1.toArray(); // Runs Fine
Grazie mille per la spiegazione. Ho controllato l'implementazione asList (T ...) in Arrays.java, mantiene una matrice di tipo T, mentre nel caso di ArrayList viene utilizzato l'oggetto []. – hellrocker