Sie befinden sich in den Archiven der Kategorie tiger.
| M | D | M | D | F | S | S |
|---|---|---|---|---|---|---|
| « Feb | ||||||
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 | ||||
- db4o (2)
- generics (2)
- java (3)
- leopard (2)
- Mac (3)
- persistence (1)
- rails (1)
- ruby (2)
- snow leopard (1)
- tiger (1)
- Uncategorized (1)
- 9.2.2010: Verschiedene Ruby Versionen parallel installieren
- 22.4.2009: Rails unter Leopard installieren
- 16.4.2009: Ich steige auf Mac um (ob das wohl gut geht)
- 19.3.2009: Ruby - Dinge, die ich mir einfach nicht merken kann
- 28.10.2005: Java 5.0 - Generics und ihre Tücken
- 26.10.2005: DB4O 5.0 Developer Release ist raus
- 19.10.2005: Maven2: Hilft das wirklich?
- 18.10.2005: DB4O ein kleiner Lichtblick am OOP-Himmel?
- 18.10.2005: SpringAOP und Java5 Annotations
- 18.10.2005: Der Einstieg
Archiv der Kategorie tiger
Java 5.0 - Generics und ihre Tücken
28.10.2005 von admin.
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.
Geschrieben in tiger, generics | Keine Kommentare »