ArrayList<Integer>[] Listen = new ArrayList<Integer>[11];???



  • Ich möchte eine Liste von Listen 😉 um genau zu sein möchte ich eine Liste die als Elemente 11 weitere Listen enthält - ich dachte es geht vielleicht so:

    ArrayList<Integer>[] Listen = new ArrayList<Integer>[11];
    

    der Compiler mekert mich aber an 😉

    jetzt habe ich es so gelöst:

    private class Liste extends ArrayList<Integer>
    {
    	Liste()
    	{
    		super(); // ist das notwendig oder wird der Konstuktor der Basisklasse eh automatisch aufgerufen wie in c++
    	}	
    }
    
    private Liste[] Listen = new Liste[11];
    


  • Da haben die Generics von Java leider den bekannten Nachteil, dass der Typparameter zur Laufzeit unbekannt ist. Du kannst also kein Array eines generischen Typs erstellen. Ein Workaround wäre das hier:

    ArrayList<Integer>[] listen = new ArrayList[11];
    		listen[0].add(new Integer(5));
    		listen[0].add(new String("skudfh"));
    

    Du bekommst hier eine Warnung, die du abstellen müsstest. Es ist sehr unschön, aber wenigstens statisch typsicher.

    Das super() kannst du weglassen.



  • Das mit new String() soll btw. einen Compilerfehler auslösen, war als Demonstration gedacht, hab ich nur vergessen, dazu zu schreiben.


Anmelden zum Antworten