# Frage zu List.toArray()-Methode



## mike (2. Jul 2004)

Hallo,

was mache ich falsch?

```
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


----------



## bygones (2. Jul 2004)

du musst ihm beim array erstellen sagen was für einen Typ es sein soll:

```
String[] strArray = (String[])strList.toArray(new String[0]);
```


----------



## mike (2. Jul 2004)

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


----------



## bygones (2. Jul 2004)

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:

```
String[] strArray = (String[])strList.toArray(new String[strList.size()]);
```


----------



## Beni (2. Jul 2004)

> (vielleicht sogar besser ?!)


Eindeutig besser. Guck dir mal den Quellcode an, was da alles passiert, wenn man einen zu kleinen Array übergibt:


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

 :wink:


----------

