Valhalla 项目首次预览:JEP 401 重新定义 Java 对象的 == 运算符
产业动态
来源:InfoQ 中文发布时间待核实
JEP 401"(值对象预览版)已经集成到了 JDK 28 中。该提案引入了仅包含 final 字段、没有身份标识的类实例,并更改了这些对象中 == 运算符的行为,为更扁平、无需内存分配的 JVM 表示形式铺平了道路。该预览功能默认处于禁用状态,可以在编译时和运行时通过 --enable-preview 参数启用。 对于开发者而言,其直接影响包括:新增的 value 修饰符、更严格的构造规则、同步限制,以及若干基于值的 JDK 类造成的迁移影响。该提案是在 OpenJDK 的 valhalla-dev" 邮件列表上经过多年讨论后形成的。 使用 value 修饰符声明的类即为值类;其余类仍为标识类。其实例字段默认是 final 的,而且必须在观测新实例之前为每个字段赋值。 value class Point { private int x; // 隐式 final private int y; public Point(int x, int y) { this.x = x; // 在对象构造完成之前对所有字段赋值 this.y = y; } public int x() { return…