Multilevel-Java generische Vererbung mit Hilfe erstreckt sich auf generische Parameter

Habe ich

public class First<T> {}

public class Second<T extends SomeConcreteClass> extends First<T> {}

public class Third<T> extends Second<T> {} //Compile-time error

Bekomme ich den compile-Zeit-Fehler

Type argument T is not with bounds of type-variable T.

Wenn ich contruct ein Third möchte ich, um der Lage sein, um die generischen parameter als SomeConcreteClass (oder abgeleitete Klasse davon), und für ein run-time-Fehler geworfen werden, wenn ich bereits angeboten werden, eine Art, die nicht Teil der SomeConcreteClass's Vererbungshierarchie.

Ich würde denken, dass die Spezifikation in Second's Erklärung würde einfach weitergeben nach unten, d.h. es sollte implizit in der Deklaration (und alle Instanziierungen)Third.

Was ist mit dem Fehler?

"einen run-time-Fehler geworfen werden, wenn ich bereits angeboten werden, eine Art, die nicht Teil". Ich denke, man kann nicht bekommen, dass. "Angebot-Typen" passiert nur zur compile-time (und dann gelöscht). Wenn Sie deaktivieren (nicht "anbieten" jede Art), dann werden Sie wahrscheinlich ClassCastExceptions irgendwann, aber später, nicht wenn die Instanz von Dritten konstruiert wird.

InformationsquelleAutor Arcane Engineer | 2012-07-19

Schreibe einen Kommentar