Konstruktor für ArrayList und LinkedList

Pseuma

Grünschnabel
Hi, ich bin der Neue hier :confused: Ich hoffe mein kleines Problem passt thematisch hier rein; ich hab leider kein Tutorial gefunden, das mir hierbei bisher weiterhelfen konnte.

Ich stecke gerade in den Prüfungsvorbereitungen und hoffe mir kann hier jemand weiterhelfen! :)

Ich möchte einen Konstruktor bauen, welcher mir, je nach gewünschtem Typ, eine ArrayList oder LinkedList initialisiert. Sprich, Klassenvariable list soll als ArrayList oder LinkedList initialisiert werden:


Java:
private List<ListElem> list;

    public FrequencyCountList(ListType type){

        if(type == ListType.ARRAYLIST){
            List<ListElem> ArrayList = new List.ArrayList<ListElem>();
                    }
        if(type == ListType.LINKEDLIST){
            List<ListElem> Linkedlist = new LinkedList<ListElem>();
                        }
        }

Zur Aufklärung:
  • ARRAYLIST und LINKEDLIST sind enum-Elemente ( in weiterer Klasse definiert )
  • ListElem hat auch eine eigene Klasse und wird dort definiert

    Wäre bis hierhin ja eigentlich kein Problem, wenn man nicht gerade auf die Java.Util.ArrayList verzichten müsste o_O lediglich Java.Util.List steht zur Verfügung und damit bekomm ich die ArrayListe nicht hin

    Danke schon mal an den, der sich die Mühe macht das durchzulesen!
 
mich würde mal die Enum Klasse intressieren ...
und könnt Ihr auf die AbstractList zugreifen ?
 
Hi.

Du kannst keine Array/Linked-List initialisieren, ohne sie zu benutzen. Vermutlich meinst du das:
Java:
if(type == ListType.ARRAYLIST) {
    list = new ArrayList<>();
} else if(type == ListType.LINKEDLIST) {
    list = new LinkedList<>();
} else {
    throw new RuntimeException("Unknown list type");
}
ansonsten habe ich deine Frage falsch verstanden.
Man könnte die Liste per Reflection erstellen, aber auch dann muss die Klasse bekannt sein...
 
Wäre bis hierhin ja eigentlich kein Problem, wenn man nicht gerade auf die Java.Util.ArrayList verzichten müsste o_O
Vielleicht solltest du nur darauf verzichten, den statischen Typ der privaten Instanzvariable (aktuell List) auf Array- oder LinkedList zu ändern, um so Polymorphie zu verstehen und dass der dynamische Typ (bei dir Array- oder LinkedList) immer dem statischen Typ entspricht oder ein Subtyp davon ist.
 
Zurück