Richtig Casten? Vector.toArray

downset04

Erfahrenes Mitglied
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
 
Hallo,

"funktioniert nicht" ist keine richtige Fehlermeldung.

Wird eine Exception geworfen oder was passiert?

MFG

Sascha
 
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:

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

oder

Java:
Data[] test1 = new Data[stagingFiles.size()];
stagingFiles.toArray(test1);
Dann gibts noch [ code=java ] tags zum besseren lesen.
 
Die 2. Vairante von Dir, Anime-Otaku, ist IMHO die effizientere, da intern kein weniteres Array anlegt wird, im Vergleich zur 1.

Takidoso
 
thx Anime-Otaku es t jetzt - aber warum t das Data[] test1 = (Data[]) stagingFiles.toArray(); eigentlich nicht?
 
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.
 
Zurück