Vector to Array



  • Folgendes ist in einer Klasse von mir gegeben:

    private Vector<Series> series = new Vector<Series>();
    
    public Series[] getSeries() {
    	if (series != null)
    		return (Series[]) series.toArray(); // ClassCastException!
    	else
    		return null;
    }
    

    Im Vector sind (auch laut Debugger) definitiv nur Series-Objekte drin. Es ist auch ein Element drin. Nun bekomme ich aber eine ClassCastException wenn ich den Vector in ein Array wandeln will. Der Fehler tritt auch an anderen Stellen auf.

    Wie kann das sein? Oder gibts eine Alternative den Vector-Inhalt zurück zu geben? Hauptsächlich geht es mir darum, das der Vector vom Aufrufer nur gelesen werden können soll. Gibts sowas wie einen konstanten Rückgabewert, wie in C++? final als Schlüsselwort vor dem public heißt ja nur, das die Methode nicht mehr überschrieben werden kann?



  • Versuch mal folgendes:

    return (Series[]) series.toArray(new Series[]);
    

    ibts sowas wie einen konstanten Rückgabewert, wie in C++.

    Nichts kann so schön wie C++ sein 🕶 🕶



  • OK, bei deinem Vorschlag bekomme ich eine Compileerror:
    Variable must provide either dimension expression or array initialiszer

    Gut, hab dann das probiert:

    return (Series[]) series.toArray(new Series[series.size()]);
    

    Dann bekomme ich allerding einen Laufzeitfehler:

    Exception in thread "AWT-EventQueue-0" java.lang.ArrayStoreException
    at java.lang.System.arraycopy(Native Method)
    at java.util.Vector.toArray(Vector.java:689)

    http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ArrayStoreException.html

    Heißt ja, das irgendwie das Array bestimmt vom typ Series ist, aber trotzdem Objekts rein kopiert werden?

    Hem, stehe irgendwie im Wald. 😃 Weiß jemand mehr? 😕



  • Letzter Versuch:

    return (Series[]) series.toArray(new Series[]{});
    

    Bin auch keine Jave-Kenner habe nur Google benutzt 😉



  • Hi hi, kommt auch eine ArrayStoreException. 😉 Trotzdem danke.

    ARGH! Ich wie kann ich nen Vector als Array zurück geben? Kein Bock Object[] zurück zu geben, muß ich wieder auf der anderen Seite casten (was ja auch funktioniert). 😡



  • Einen hab ich noch 😃

    return (Series[]) series.toArray(new Series[0]);
    

    Links:
    Beschreibung zum heiklen Thema toArray(): http://www.galileocomputing.de/openbook/javainsel4/javainsel_11_002.htm#Rxx365java110020400038D1F0121E1

    Und hier der andere Link, vielleicht hilfts ja dir 🙂 :
    http://forum.java.sun.com/thread.jspa?threadID=483461&messageID=2257560



  • Die ArrayStoreException tritt auf, wenn man ein Objekt mit falschem Typ in einem Array speichern will. Also z.B. einen Integer in einen String[] schreiben möchte.

    Hast du vielleicht mehrere Klassen mit demselben Namen? Hast du den Debugger richtig benutzt? (es könnte ja sein...).


Anmelden zum Antworten