为什么Java不支持通用的可抛出物?
class Bouncy<T> extends Throwable {
}
// Error: the generic class Bouncy<T> may not subclass java.lang.Throwable
为什么 Java 不支持泛型 s?Throwable
我意识到类型擦除使某些事情复杂化,但显然Java已经做了很多事情,所以为什么不把它再推一个档次,并允许泛型s,并全面编译时检查潜在的问题呢?Throwable
我觉得类型擦除的论点相当薄弱。目前,我们无法执行以下操作:
void process(List<String> list) {
}
void process(List<Integer> list) {
}
当然,我们没有它也能过得去。我并不是要求我们应该能够在同一个块中做到这一点,但是如果我们在具有严格的编译时可执行规则的不相交上下文中使用它们(这几乎是泛型现在的工作方式),那么它难道不可行吗?catch Bouncy<T1>
Bouncy<T2>
try