Я хочу протестировать JEP 468 (Создание производной записи), но не могу его скомпилировать.
В JEP есть абзац:
Это языковая функция предварительного просмотра, отключенная по умолчанию.
Чтобы попробовать примеры в JDK 23, вам необходимо включить функции предварительного просмотра:
Скомпилируйте программу с помощью javac --release 23 --enable-preview Main.java и запустите ее с помощью java --enable-preview Main; или,
При использовании средства запуска исходного кода запустите программу с помощью java --enable-preview Main.java; или,
При использовании jshell запустите его с помощью jshell --enable-preview.
Итак, я установил jdk 23 (для windows > sha256: b18897bec6b1c6e0f639d95757eb0e3b0ec3d69720f6e4631874f2f9408075c5),
соответственно изменил мой PATH,
выполнил javac --version
, который вернул «javac 23»
написал следующий класс, используя создание производной записи:
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
Как я могу заставить это скомпилироваться (и в конечном итоге запуститься)?
Если бы этот JEP должен был быть включен в Java 23, в его заголовке вместо «Статус-кандидат» было бы «Статус целевой» и «Выпуск 23». Я предполагаю, что либо кто-то с оптимизмом смотрел на его включение в Java 23, либо изначально он был нацелен на Java 23, но был отозван или возвращен в статус кандидата до того, как Java 23 была завершена.
Как отмечалось в комментариях выше, функция JEP 468: создание производных записей (предварительная версия) в настоящее время не включена в Java 23.
candidate
, чем Closed / Delivered
.Итак, следите за Java 24.
Этот JEP все еще находится в статусе кандидата, что означает, что он еще не принят - в списке функций JDK он не упоминается.