array of generics



  • Hallo,
    wie muss folgendes formuliert werden ,daß es kompilierbar ist.
    Bei pair handelt es sich um einen generischen Typ der in etwa dem C++-pair entspricht.
    Die lapidare Fehlermeldung lautet "generic array creation".
    Allerdings weis ich nicht was der Compiler mir sagen will.
    Darf man mit generics keine arrays erstellen ?

    pair<String,String> VisibleColumns[]={
                        new pair<String,String>("Verkaufsbezeichnung",null),
                        new pair<String,String>("ccm",null),
                        new pair<String,String>("kw",null),
                        new pair<String,String>("ps",null),
                        new pair<String,String>("radstand1","Radstand"),
                        new pair<String,String>("Nutzlast",null),
                        new pair<String,String>("aufbau_art","Aufbau") ,
                        new pair<String,String>("gesgew","Gesamtgew.")
    };
    


  • Die Elemente eines Arrays dürfen nicht generisch sein. Generics werden beim kompilieren gelöscht. Zur Laufzeit würde da "? VisibleColumns[] = new ?..." stehen, und ein ? kann man natürlich nicht sauber initialisieren.

    Verwende doch eine ArrayList, die erlaubt sowas.

    List<pair<x,y>> list = new ArrayList<pair<x,y>>();
    list.add( new pair<x,y>( ... ));
    

    [Edit]
    Oder eine (Hash/Tree)Map<String,String>, die erlaubt Schlüssel-Werte-Paare. Das scheinst du hier sowieso irgendwie nachbilden zu wollen?



  • Merci für deine Antwort.
    Habe das Ganze nun etwas anders gelöst.

    // ColumnDesc konkretisiert einfach pair<String,String>
    // und hat keine weitere Aufgabe
    // warum hat Java kein typedef ???
    
    public class ColumnDesc extends pair<String,String>
    {
        public ColumnDesc(String first,String second)
        {
            super(first,second) ;
        }
    }
    
    ColumnDesc [] VisibleColumns=
    {
            new ColumnDesc("Verkaufsbezeichnung",null),
            new ColumnDesc("ccm",null),
            new ColumnDesc("kw",null),
            new ColumnDesc("ps",null),
            new ColumnDesc("radstand1","Radstand"),
            new ColumnDesc("Nutzlast",null),
            new ColumnDesc("aufbau_art","Aufbau") ,
            new ColumnDesc("gesgew","Gesamtgew.")
    };
    

Log in to reply