有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

继承为什么Java不支持在方法签名中添加“throws”?

这是一个在我脑海里萦绕了好几天的问题

在继承和多态性方面,Java通过桥接方法概念支持协变返回类型

但是为什么他们不实现一个像桥接方法这样的概念,来连接那些在超类中没有throws子句,但在子类中被重写时有一个throws clause的方法呢。或者他们不能向方法签名中添加throws来克服这个问题

this邮报

我的想法是,当从超类重写方法时,检查的异常 子类方法声明的内容不能比超类方法声明的内容更一般

但是为什么我们不能重写一个在超类中没有thorws但在子类中有它的方法呢

为什么我的建议不能应用于Java机制

谁能给我解释一下吗


共 (1) 个答案

  1. # 1 楼答案

    JVM验证器会忽略throws子句,因此不需要桥接或其他合成方法

    编译器强制执行语言约束,即抛出规范的范围不超过重写的方法。这与收益类型(自1.5起)的协变行为相同。对相关问题的回答说明了为什么会出现这种情况