Hallo ,
ich hätte eine Frage zu Java Generics.
Ich weiß das die Generics wegen der abwärts- Kompatibilität den Mechanismus des Type Erasure verwenden. Das heißt ja, dass zur Laufzeit keine Typinformation mehr bekannt sind und deshalb zur Kompilierzeit die Typsicherheit geprüft wird.
Und meine Frage dazu:
Wie werden dann die Werte z.B. in einer ArrayList<Integer> gespeichert? --> Als Object?
Und wenn ich folgende Liste habe:
Zur Kompilierzeit weiß der Compiler ja dass die "intList" Integer werte beinhaltet und weiß deshalb auch, dass die Zeile 3 in Ordnung gehen muss.
Aber woher ist zur Laufzeit bekannt, dass der Wert aus intList.get(0) ein Integer ist, bzw. von Object auf Integer gecastet werden muss.
Und wie viele casts werden durch die Verwendung von Generics implizit durchgeführt?
Wie beeinflussen Generics (durch Casts) die Laufzeit?
Ich hab leider niergends eine Beschreibung dazu finden können. Meist wird nur das Type Erasure beschrieben, aber vom internen Verhalten nicht.
Wäre super wenn mir jemand weiterhelfen könnte, bzw. einen Link postet wo dieses interne Verhalten beschrieben ist.
Vielen Dank,
ich hätte eine Frage zu Java Generics.
Ich weiß das die Generics wegen der abwärts- Kompatibilität den Mechanismus des Type Erasure verwenden. Das heißt ja, dass zur Laufzeit keine Typinformation mehr bekannt sind und deshalb zur Kompilierzeit die Typsicherheit geprüft wird.
Und meine Frage dazu:
Wie werden dann die Werte z.B. in einer ArrayList<Integer> gespeichert? --> Als Object?
Und wenn ich folgende Liste habe:
Java:
List<Integer> intList = new ArrayList<Integer>();
intList.add(1);
Integer myInt = intList.get(0);
Zur Kompilierzeit weiß der Compiler ja dass die "intList" Integer werte beinhaltet und weiß deshalb auch, dass die Zeile 3 in Ordnung gehen muss.
Aber woher ist zur Laufzeit bekannt, dass der Wert aus intList.get(0) ein Integer ist, bzw. von Object auf Integer gecastet werden muss.
Und wie viele casts werden durch die Verwendung von Generics implizit durchgeführt?
Wie beeinflussen Generics (durch Casts) die Laufzeit?
Ich hab leider niergends eine Beschreibung dazu finden können. Meist wird nur das Type Erasure beschrieben, aber vom internen Verhalten nicht.
Wäre super wenn mir jemand weiterhelfen könnte, bzw. einen Link postet wo dieses interne Verhalten beschrieben ist.
Vielen Dank,