Non-Object in Vector?



  • Kann man irgendwie ein etwas anderes als ein Objekt in einen Vector stecken?
    In C++ ging das so:

    std::vector<Type> vektorname;
    vektorname.push_back(Element_vom_Typ_Type);
    

    In Java bin ich bis jetzt so weit:

    Vector vektorname = new Vector();
    board.addElement(Element_vom_Typ_Objekt);
    

    Ich würde jedoch gerne z.B. einen Vector aus chars oder ints haben, nicht nur aus Objekten, wie z.B. String. Unmöglich?

    Danke, styler.



  • In Java 1.4: unmoeglich. Die Standard-Loesung ist dann, z.B. ints in Integer-Objekte zu verpacken.

    In Java 1.5 wird das ganze dann ziemlich genau wie in C++ moeglich sein.



  • Hi SG1,

    danke für die schnelle Antwort.
    Über die erste Lösung hab ich auch schon nachgedacht, ist halt ein bisschen umständlich, aber wenns nich anders geht...
    bin irgendwie enttäuscht von java.

    thx, styler.


  • Mod

    SG1 schrieb:

    In Java 1.5 wird das ganze dann ziemlich genau wie in C++ moeglich sein.

    Nein. Da wird das "in Objekte verpacken" nur automatisiert. Man steckt also weiterhin Integer-Objekte in Listen etc., es sieht aber so aus, als würde man ints in die Listen etc. stecken.

    Es wird weiterhin die Nachteile geben, die die Wrapper-Objekte in Java nunmal mit sich bringen:

    • hoher Speicherplatzverbrauch
    • geringe Performance


  • BTW: Warum funktioniert dann das hier nicht (*verzweifelt*)?

    board.addElement(new Vector());
    board.get(0).addElement(new Integer(1));
    

    Ich bekomme immer einen
    "java.lang.Error: Unresolved compilation problem:
    The method addElement(Integer) is undefined for the type Object"
    Fehler in der zweiten Codezeile.

    Danke nochmals...
    styler.



  • So gehts:

    Vector board = new Vector();
    board.addElement(new Vector());
    ((Vector)board.get(0)).addElement(new Integer(1));
    

    Die Methode get(int index) der Klasse Vector liefert ein Object zurück - und die Klasse Object hat nun mal keine Methode namens addElement. Deshalb musst
    du erst nen expliziten Downcast auf Vector ausführen.

    flo



  • Die Methode get(int index) der Klasse Vector liefert ein Object zurück - und die Klasse Object hat nun mal keine Methode namens addElement. Deshalb musst
    du erst nen expliziten Downcast auf Vector ausführen.

    Das jetzt aber definitiv nur mehr bis 1.4...
    Mit den Generics von 1.5 sollte das dahin sein.


Anmelden zum Antworten