class Bouncy<T> extends Throwable {
}
// Error: the generic class Bouncy<T> may not subclass java.lang.Throwable
Почему Java не поддерживает общий Throwable
s?
Я понимаю, что стирание типа усложняет некоторые вещи, но, очевидно, Java уже много работает, поэтому почему бы не надавить на него еще одну метку и разрешить общий Throwable
s, с полной проверкой времени компиляции для потенциальных проблем?
Мне кажется, что аргумент стирания типа довольно слабый. В настоящее время мы не можем:
void process(List<String> list) {
}
void process(List<Integer> list) {
}
Конечно, мы обойдемся без него. Я не прошу, чтобы мы могли делать catch Bouncy<T1>
и Bouncy<T2>
в том же блоке try
, но если мы будем использовать их в непересекающихся контекстах со строгими правилами принудительного исполнения во время компиляции (что в значительной степени является способом дженериков работает прямо сейчас), не будет ли это выполнимо?