Java 5.0 – Generics und ihre Tücken

Einmal mehr verschwand ich heute in den Untiefen der neuen Java Tiger Möglichkeiten und verbiss mich an einem Problem, das nicht nur meines sein dürfte.

Soll bei einer parametrisierten Klasse in einer Methode auf Typ-Information (also Parametriesierungs-Informationen; in diesem Fall der Typ-Parameter) zurückgegriffen werden, so ist das schlicht unmöglich, da diese Informationen ja vom Compiler gelöscht werden (type erasure). Etwas rumgoogeln hilft ja bekanntlich (fast) immer weiter und so fand ich diese sehr lehrreiche Seite.
Kurz zusammengefasst: Muss eine Methode einer parametrisierten Klasse auf Typ-Informationen zurückgreifen, so muss diese als Argument übergeben werden. Und hier noch ein Beispiel:


class Test<Typ> {
public String doSomething(Class<Typ> clazz) {
return Other.methodNeedsClass(clazz);
}
}

Anders kann man nicht an die Klasse des Typ-Parameters ‚Typ‘ gelangen. Es wären vielleicht noch Umwege über Reflection möglich, aber davon vielleicht ein andermal.

Comments are closed.