加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 可以从类定义中删除final来向后兼容吗?

发布时间:2020-12-15 00:26:57 所属栏目:Java 来源:网络整理
导读:我目前正在阅读Joshua Bloch撰写的Effective Java,第17项是“继承的设计和文档,或者禁止它”.作者建议默认禁止继承. 默认情况下声明类final是否安全,如果需要扩展类,则在以后的发行版中删除final关键字?它是否会破坏与以前版本编译的代码的向后兼容性? 如
我目前正在阅读Joshua Bloch撰写的Effective Java,第17项是“继承的设计和文档,或者禁止它”.作者建议默认禁止继承.

默认情况下声明类final是否安全,如果需要扩展类,则在以后的发行版中删除final关键字?它是否会破坏与以前版本编译的代码的向后兼容性?

如果是这样的话,那么让所有类最终成为一个更安全的赌注,只有在有良好支持的需求的情况下才能在将来的版本中删除它.

解决方法

它既不破坏二进制也不破坏源兼容性这就是让课程最终成为一个好主意的原因之一;改变主意总是可以的.

The Java Language Specification,§13.4.2,关于二进制兼容性有如下说明:

Changing a class that was declared final to no longer be declared final does not break compatibility with pre-existing binaries.

我想你仍然可以构成一个可以打破程序的解释性例子;比如字节码 – 生成一个继承自所谓的最终类的类,然后加载生成的类并依赖于获取VerifyError.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读