编译时错误:泛型类可能不是 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 虚拟机的 catch 机制仅适用于非泛型类,因此需要此限制。
问题:
如何限制子类
java.lang.Throwable
不是泛型类?或者更通用的问题是,如何限制任何类的子类不能是通用的?