2015-04-28 4 views
9

Ich habe die folgende Java-Klasse mit mehreren Vererbungsebenen mit bestimmten Typparametern. Ich möchte den Typparameter T in der Klasse B. AllerdingsMehrere Vererbungsebenen

class B extends C { 
} 
class C<T extends D> { 
} 
class D { 
} 

verwenden, er folgende nicht kompiliert:

class B extends C { 
    T t; 
} 
class C<T extends D> { 
} 
class D { 
} 

Obwohl ich die Variable t in der Klasse C definieren, aber es ist nicht eine gute Programmierpraxis. Wie kann ich folgendes definieren (Das kompiliert auch nicht)?

class B extends C<T extends D> { 
} 

Vielen Dank!

+0

"aber es ist keine gute Kodierungspraxis" 0o? Warum ? – benzonico

+0

Wenn ich dieses t für Klasse B verwenden möchte, aber ich bekomme eine andere Unterklasse von Klasse C, dann muss ich viele Variablen t, t2, t3 ... in Klasse C für alle Unterklassen erstellen. –

Antwort

5

Typ Parameter werden nicht vererbt!

Wenn Sie Ihre Klasse B generic haben, können Sie ihren eigenen Typ-Parameter angeben sollten:

class B<T extends D> extends C<T> { 
    T t; 
    ... 
} 

Beachten Sie, dass Sie wieder den Typ-Parameter beschränken muss T es D erstreckt haben, weil es auf diese Weise eingeschränkt ist in Klasse C.

1

es sein sollte:

class B<T extends D> extends C<T> { 
} 
Verwandte Themen