Frage zu List.toArray()-Methode

  • Themenstarter Themenstarter mike
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
M

mike

Gast
Hallo,

was mache ich falsch?
Code:
List strList = new ArrayList();
strList.add("sjdfjddk");
strList.add("jdfghirgr");
String[] strArray = (String[])strList.toArray();

Beim Compilieren läuft alles wunderbar, aber beim Starten kriege ich eine ClassCastExeption... 🙁

Was mache ich falsch?

mike
 
du musst ihm beim array erstellen sagen was für einen Typ es sein soll:
Code:
String[] strArray = (String[])strList.toArray(new String[0]);
 
Danke für die Antwort, geht jetzt alles.

Noch ne kleine Frage, warum steht in den Klammern new String[0] ? Was bedeutet das, ist das ein Element des Arrays oder wie?

mike
 
aus der API:
the array into which the elements of this list are to be stored, if it is big enough; otherwise, a new array of the same runtime type is allocated for this purpose
also kannst du auch (vielleicht sogar besser ?!) schreiben:
Code:
 String[] strArray = (String[])strList.toArray(new String[strList.size()]);
 
(vielleicht sogar besser ?!)
Eindeutig besser. Guck dir mal den Quellcode an, was da alles passiert, wenn man einen zu kleinen Array übergibt:

Code:
        if (a.length < size)
            a = (Object[])java.lang.reflect.Array.newInstance(
                                a.getClass().getComponentType(), size);

:wink:
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben