Frage zu Generics



  • Hallo Leute,

    ich habe eine Grundlegende Frage zu den Generics.
    Ich habe im Programm irgendwo eine Klasse wie folgt:

    class Blub<X> {
      // ...
    }
    

    nun will ich irgendwo im Inneren ein Konstrukt wie folgt machen:

    X varname = new X();
    

    Dies geht jedoch nicht 😞 Wie soll ich es sonst anstellen? Noch interessanter:

    X array [] = new X[size];
    

    ... geht natürlich auch nicht 😞 Wie kann ich dieses Problem lösen?

    Für Eure Antworten wäre ich sehr dankbar.

    Gruß 🙂



  • So etwas geht in Java leider nicht. Du kannst dir eine Factory-Klasse schreiben nach dem Motto Factory<T> und die deiner eigenen Klasse übergeben.

    Deine Factory-Klasse musst du dann z.B. von Factory<Foo> ableiten und die kann die Foos erzeugen. Es suckt, aber viel besser geht es nicht.



  • Optimizer schrieb:

    Deine Factory-Klasse musst du dann z.B. von Factory<Foo> ableiten und die kann die Foos erzeugen. Es suckt, aber viel besser geht es nicht.

    Aber hat die Factory-Klasse dann nicht genau das gleiche Problem?



  • Deshalb musst du von der generischen Factory-Klasse eine nicht-generische ableiten. Die generische dient nur alles Schnittstelle für die Methode die die Factory braucht, damit man ihr irgendeine Factory<T> geben kann und sie nicht die konkrete Implementierung kennen muss.

    Wäre unpraktisch, wenn du eine generische lib schreibst, du kannst nämlich als Autor der lib nicht für alle Typen Factory-Klassen definieren, aber ne generische abstrakte Basisklasse.



  • Ah, ok, verstehe.


Anmelden zum Antworten