Alles hat bei mir funktioniert , wenn ich "ArrayList<String>[] list = new ArrayList<String>[10];" zu "ArrayList<String>[] list = new ArrayList[10];" geändert habe . Hat jemand eine Erklärung dazu?
kurze Frage
In der Diskussion
Kommentare (1)
- Beliebt
- Neu
- Alt
Du musst angemeldet sein, um einen Kommentar schreiben zu können
Lisa L
7 April 2022, 08:05
Schwierig zu beantworten weil es ein komplexes Thema ist, das in der Collections Quest angesprochen wird. Also ganz kurz :)
Es geht um Generics (die <>). Die sind nachträglich an Java angeflanscht worden. Da man alten Code dadurch nicht unbrauchbar machen wollte, ging man einige Kompromisse ein. Einer war, dass der Typ bei Generics zur Laufzeit unbekannt ist und nur zur Kompilierzeit geprüft wird. Bei Arrays ist das anders. Da kann man den Typ zur Laufzeit abfragen. Oder besser gesagt, wenn du ein Array erstellst brauchst du zur Laufzeit den Typ. Den hast du aber bei Generics eben nicht wie oben erwähnt, nur zur compile time (Google: type erasure)
Wichtig zu wissen ist erstmal nur, dass es nicht geht und wenn man irgendetwas Generisches in einem Container braucht, dann nimmt man am besten eine Collection dafür (List, Set, Map)
0