Ошибка времени компиляции: Общий класс может не подклассов 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).
Это ограничение необходимо, так как механизм catch виртуальной машины Java работает только с не-генерическими классами.
Вопрос:
-
Как он ограничен, что подкласс
java.lang.Throwable
не будет общим классом? -
Или может возникнуть более общий вопрос: как ограничить, чтобы подклассы любого класса не могли быть общими?