Невозможно использовать сопоставление шаблонов для функции переключения в 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. Как я могу использовать эту функцию?

0 ответов

Другие вопросы по тегам