# Richtig Casten? Vector.toArray



## downset04 (24. Juni 2008)

Hallo

Data inFile = new Data();

Vector <Data> stagingFiles = new Vector<Data> ();
stagingFiles.add(inFile);
Data[] test1 = (Data[]) stagingFiles.toArray();


Data[] test = new Data[1]  ;
test[0]=inFile;

 j.setArray( test);        
 j.setArray( test1);

Hallo  j.setArray( test);   funktioniert warum aber  j.setArray( test1); nicht?
Stimmt da was mit dem casten nicht ?

thx downset


----------



## zerix (24. Juni 2008)

Hallo,

"funktioniert nicht" ist keine richtige Fehlermeldung. 

Wird eine Exception geworfen oder was passiert?

MFG

Sascha


----------



## Anime-Otaku (24. Juni 2008)

downset04 hat gesagt.:


> Hallo  j.setArray( test);   funktioniert warum aber  j.setArray( test1); nicht?
> Stimmt da was mit dem casten nicht ?
> 
> thx downset



Ich würde behaupten du bekommst eine ClassCastException.....aber mit so wenig Infos kann man nur mutmaßen was eigentlich das Problem ist.

auf jeden Fall würde ich es so machen:


```
Data[] test1 = stagingFiles.toArray(new Data[0]);
```

oder 


```
Data[] test1 = new Data[stagingFiles.size()];
stagingFiles.toArray(test1);
```
Dann gibts noch [ code=java ] tags zum besseren lesen.


----------



## takidoso (24. Juni 2008)

Die 2. Vairante von Dir, Anime-Otaku, ist IMHO die effizientere, da intern kein weniteres Array anlegt wird, im Vergleich zur 1.

Takidoso


----------



## downset04 (24. Juni 2008)

thx Anime-Otaku es t jetzt - aber warum t das  Data[] test1 = (Data[]) stagingFiles.toArray(); eigentlich nicht?


----------



## Anime-Otaku (24. Juni 2008)

Weil afaik es ein Object[] zurückgibt. 
Allerdings besagt das Object[] nur, dass der Typ vom Array Object ist, aber nicht welche Objekte enthalten sind. Daher ist das nicht möglich. Und da die Methode noch nicht typisiert ist wie toArray(array) geht das auch momentan nicht anders.


----------

