Неизвестная синтаксическая ошибка возникает из-за знака Logical not при написании оператора switch-yield в Java. После выхода, как показано ниже '!' вызовет ошибку компиляции.
final var error = switch(args[0]) {
case "A" -> {
yield !true || true;
}
default -> false;
};
Распечатанное сообщение об ошибке компиляции:
error: not a statement
yield !true || true;
^
Следующее '!' После написания кода он успешно компилируется.
final var success = switch(args[0]) {
case "A" -> {
yield true || !true;
}
default -> false;
};
Оба кода работают в моей среде (JDK19).
Java 16 выдает ошибку not a statement
Возникает при тестировании на версии JDK 15. Это была ошибка, и, похоже, она была исправлена, так как тестирование с JDK 17 и выше не приводило к ошибкам компиляции.




Это ошибка JDK.
Кажется, это решено в версии 17.
Пробовал и без ошибок в openjdk 17.0.2
смешно:
yield (!true) || true;работает