java中为何泛型类不能继承Throwable?

发布网友 发布时间:2022-04-25 20:48

我来回答

3个回答

热心网友 时间:2022-06-17 06:59

意义,
异常发生在底层实现,
捕获异常在上层。

泛型,用于使用某个类的时候*相关类型。

显然*相关类型这个工作应该是哪里用哪里直到。
如果异常支持泛型,
那捕获异常的地方就要知道异常的泛型,也就必要知道了功能实现。

假设可以抛出有泛型的异常
如果说一个方法被声明为 throws SomeException<String>,SomeException<Number>
那么对于外界来说String的意义是什么
外界是否要捕获 分别SomeException<String> 和 SomeException<Number>?
还是只要捕获 SomeException<?>?

这无疑增加了异常处理的复杂度。
异常,最初设计就是为了把异常处理的代码和业务逻辑的代码分开,不会粘粘到一起。
这样可以在写业务逻辑的时候抛开泛型暂时不管,先把完整的业务逻辑写完,然后单独处理异常情况。
现在如果异常支持泛型,那么就会导致异常处理的复杂度增加。不能专心与业务逻辑。

热心网友 时间:2022-06-17 07:00

泛型:本质上是提供类型的“类型参数”,也称为参数化类型或者是参数多态
泛型类的局限性:
泛型类参数不能实例化;
如:E a=new E();错误的
不能实例化类型参数的数组;
如:E ele=new E[10];错误的
类的静态变量不能声明为泛型;
如:static E a;错误的
泛型类不能继承自Throwable以及其子类
如:class Test<E> extends Throwable{.....};错误的

热心网友 时间:2022-06-17 07:00

虚拟机的规格标准强制的规定的:
JVM虚拟机目前没有实现捕捉“泛型的抛出对象”,捕捉机制只对非泛型类有效。
泛型模板在编译时也会类型具体化。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com