您现在的位置是:首页 > 文章详情

Java 最新 JEP 草案:不再要求构造器的首行语句是 super() 或 this()

日期:2023-01-23点击:240

OpenJDK 官网公布了一项新的 JEP 草案,内容是不再要求 super() 或 this() 在构造器中作为首条语句出现。

该草案当前目标是更改 Java 语言规范,并对 Java 编译器进行相应的更改,以便:

  • super()this()不再必须作为构造器中的第一条语句出现
  • 保留提供给构造器的现有安全和初始化保证
  • 现有程序继续像以前一样编译和运行

按照目前的 Java 语言规范,构造器的第一条语句必须要求调用super()this()。但 Java 虚拟机实际上支持更多的灵活性:

  • this()super()的多次调用可能会出现在构造器中,只要在任何代码路径上有一次调用
  • 任意代码可出现在this()/super()之前,只要该代码不引用正在构建的实例
  • 不过this()/super()调用可能不会出现在try { }块内

事实上,JLS 受到了许多不必要的限制。而这种不一致属于历史产物:最初的 JVM 规范也有更多的限制,这导致了编译器生成的合成字段存在初始化问题——为了支持新的语言特性,如内部类和捕获的自由变量。现在 JVM 规范被放宽以适应编译器,但这种新的灵活性从未回到语言层面。

详情查看 https://openjdk.org/jeps/8300786

原文链接:https://www.oschina.net/news/225754
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章