Ich versuche, eine reguläre RuntimeException in einer generischen Klasse wie dieser zu machen:
%Vor% Dieses Codewort gibt mir eine Fehlermeldung über das Wort RuntimeException
saying The generic class SomeGenericClass<SomeType>.SomeInternalException may not subclass java.lang.Throwable
.
Was hat diese RuntimeException damit zu tun, dass meine Klasse generisch ist?
Java lässt generische Unterklassen von Throwable nicht zu . Und eine nicht-statische innere Klasse wird effektiv durch die Typparameter ihrer äußeren Klasse parametrisiert (Siehe Oracle JDK Bug 5086027 ). In Ihrem Beispiel haben Instanzen Ihrer inneren Klasse beispielsweise die Form SomeGenericClass<T>.SomeInternalException
. Daher erlaubt Java der statischen inneren Klasse einer generischen Klasse nicht, Throwable
zu erweitern.
Ein Workaround wäre, SomeInternalException
zu einer statischen inneren Klasse zu machen. Dies liegt daran, dass, wenn die innere Klasse static
ist, ihr Typ nicht generisch ist, d. H.% Co_de%.
Tags und Links java inheritance generics