Невозможно использовать сопоставление шаблонов для функции переключения в vscode с jdk 19
Я использую код визуальной студии с языковой поддержкой для Java(TM) плагином Red Hat. Я установил время выполнения в settings.json как
"java.configuration.runtimes": [
{
"name": "JavaSE-17",
"path": "path/to/jdk19",
"default": true
}
]
Следующий автономный файл Java
import java.util.Objects;
public class Edge {
public final int first;
public final int second;
public Edge(int first, int second) {
this.first = first;
this.second = second;
}
@Override
public boolean equals(Object other) {
return switch (other) {
case Edge e -> (first == e.first && second == e.second) || (first == e.second && second == e.first);
default -> false;
};
}
@Override
public int hashCode() {
if (first < second)
return Objects.hash(first, second);
else
return Objects.hash(second, first);
}
}
выдает следующие ошибки:
Cannot switch on a value of type Object. Only convertible int values, strings or enum variables are permitted
,
Edge cannot be resolved to a variable
,
Syntax error on token "e", delete this token
,
e cannot be resolved to a variable
.
IntelliJ не показал никаких ошибок, поэтому я не думаю, что код неверен. Я проверил это
sealed
ключевое слово из java 17 работает. Хотя сопоставление шаблонов для коммутатора является функцией предварительного просмотра, я слышал, что для отдельных файлов функции предварительного просмотра включены по умолчанию. Также я видел видео, где кто-то использует эту функцию в vscode. Как я могу использовать эту функцию?