Ошибка времени компиляции: общий класс не может быть подклассом 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
не был универсальным классом?Или будет более общий вопрос: как ограничить подклассы любого класса, которые не могут быть универсальными?
Generic
. - person Vishrant   schedule 04.05.2014Throwable
, если вы должны позволить компилятору жаловаться, когда кто-то пытается это сделать. - person Bhesh Gurung   schedule 04.05.2014Throwable
, когда создаем классException
илиError
. Это вызовет проблемы, если мне придется расширить класс, напримерApplet
- person Vishrant   schedule 04.05.2014java.lang.Throwable
- person Vishrant   schedule 04.05.2014