Moin,
Ich hab ein Problem mit Generic in Subklassen. Ich habe ein Klasse die mit "T" getypt ist. Im Prinzip will ich damit den Typ einer Klasse wissen.
Das funktioniert auch soweit korrekt. Allerdings sobald ich mit getypten Collections anfange, wird es kompliziert, z.B.:
Das compiliert natürlich nicht, ebenso wenig wie:
Die einzige Möglichkeit ist:
Allerdings liefert getType() nun natürlich Class<List> und nicht Class<List<T>>. Hat jemand vielleicht eine Idee, wie das zu bewerkstelligen ist? Und falls nicht eine Erklärung warum das nicht geht? So ganz klar ist mir das im Moment nämlich nicht.
Danke.
Gruß
Philipp
PS: Ja ich weiß, dass die Info zur Laufzeit eh nicht vorhanden ist, mir geht es hier auch nur um die Compilezeit
Ich hab ein Problem mit Generic in Subklassen. Ich habe ein Klasse die mit "T" getypt ist. Im Prinzip will ich damit den Typ einer Klasse wissen.
Java:
public static class Upper<T>
{
private Class<T> type;
public Upper(final Class<T> clazz) {...}
public Class<T> getType()
{
return type;
}
}
Das funktioniert auch soweit korrekt. Allerdings sobald ich mit getypten Collections anfange, wird es kompliziert, z.B.:
Java:
public static class Lower extends Upper<List<String>>
{
public Lower()
{
super(List.class);
}
}
Das compiliert natürlich nicht, ebenso wenig wie:
Java:
public static class Lower extends Upper<List<String>>
{
public Lower()
{
super(List<String>.class);
}
}
Die einzige Möglichkeit ist:
Java:
public static class Lower extends Upper<List>
{
public Lower()
{
super(List.class);
}
}
Allerdings liefert getType() nun natürlich Class<List> und nicht Class<List<T>>. Hat jemand vielleicht eine Idee, wie das zu bewerkstelligen ist? Und falls nicht eine Erklärung warum das nicht geht? So ganz klar ist mir das im Moment nämlich nicht.
Danke.
Gruß
Philipp
PS: Ja ich weiß, dass die Info zur Laufzeit eh nicht vorhanden ist, mir geht es hier auch nur um die Compilezeit