I want to test JEP 468 (Derived Record Creation) but I'm unable to compile it.
In the JEP there is a paragraph:
This is a preview language feature, disabled by default
To try the examples in JDK 23 you must enable preview features:
Compile the program with javac --release 23 --enable-preview Main.java and run it with java --enable-preview Main; or,
When using the source code launcher, run the program with java --enable-preview Main.java; or,
When using jshell, start it with jshell --enable-preview.
So I installed jdk 23 (for windows > sha256: b18897bec6b1c6e0f639d95757eb0e3b0ec3d69720f6e4631874f2f9408075c5),
changed my PATH accordingly,
executed javac --version
, which returned "javac 23"
wrote the following class using the derived record creation:
public class Main {
record Point(int x, int y) {
public Point {
System.out.println("Point created at (" + x + ", " + y + ")");
}
}
public static void main(String[] args) {
var oldLoc = new Point(1, 2);
Point nextLoc = oldLoc with {
x = 0;
};
System.out.println("New point: " + nextLoc);
}
}
javac --release 23 --enable-preview .\src\Main.java
.\src\Main.java:14: Fehler: ';' erwartet
Point nextLoc = oldLoc with {
^
.\src\Main.java:14: Fehler: Keine Anweisung
Point nextLoc = oldLoc with {
^
.\src\Main.java:14: Fehler: ';' erwartet
Point nextLoc = oldLoc with {
^
3 Fehler
How can I get this to compile (and eventually run)?
As noted in the Comments above, the feature JEP 468: Derived Record Creation (Preview) is not included in Java 23.
candidate
rather than Closed / Delivered
.So, keep an eye on Java 24.
Update: Java 24 is out. But JEP 468 still carries a status of Candidate. So not included in Java 24.
The Project Amber page says JEP 468 is “Currently in progress”. So work is underway, but apparently is not yet ready for show-and-tell.