コンパイル時エラー:ジェネリック クラスは java.lang.Throwable をサブクラス化できない可能性があります
public class TestGenericClass<E> extends Exception {
/*Above line will give compile error, the generic class TestGenericClass<E> may
not subclass java.lang.Throwable*/
public TestGenericClass(String msg) {
super(msg);
}
}
上記のコンパイル時エラーは、以下の§ jls-8.1.2に記載されている理由によるもので、この質問で説明されています。
ジェネリック クラスが Throwable (§11.1.1) の直接または間接のサブクラスである場合、コンパイル時エラーになります。
Java 仮想マシンのキャッチ メカニズムは非ジェネリック クラスでのみ機能するため、この制限が必要です。
質問:
java.lang.Throwable
のサブクラスがジェネリック クラスにならないことはどのように制限されますか?または、より一般的な質問は、どのクラスのサブクラスもジェネリックにできないことを制限する方法ですか?