Die innere Klasse einer generischen Klasse wird erweitert Throwable [duplizieren]

8

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?

    
Steven Roose 04.12.2012, 01:18
quelle

1 Antwort

11

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%.

%Vor%     
reprogrammer 04.12.2012, 01:22
quelle

Tags und Links