来源:OSCHINA 时间:2023-01-23 10:33:46
(相关资料图)
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。
2023 需求最高的编程语言:Python、JavaScript 和 Java
每日短讯:LibreOffice 7.4.3 已发布,带来大量修复项
天天报道:Endless OS 5.0 Beta 发布,Debian 衍生发行版
世界今亮点!Bitwarden v2023.1 发布,开源密码管理器
MakuGenerator v2.1.1 发布,超好用的代码生成器-环球快看