Использование instanceof <pattern>в NetBeans 11.3 + OpenJDK 14 - PullRequest
1 голос
/ 07 мая 2020

После обновления OpenJDK до 14 грамматика instanceof была расширена, поэтому теперь мы можем использовать шаблоны: RelationalExpression instanceof Pattern. Подробнее здесь . В NetBeans 11.3 я заметил подсказку instanceof <pattern> can be used here рядом с этим методом:

public String getTLSCipherSuite() {
    if (socket instanceof SSLSocket) {
        return ((SSLSocket) socket).getSession().getCipherSuite();
    }
    return null;
}

Если я меняю ссылочный тип на шаблон, я вижу ошибку NetBeans:

public String getTLSCipherSuite() {
    if (socket instanceof SSLSocket sslSocket) {//<--- ")" expected
        return sslSocket.getSession().getCipherSuite();
    }
    return null;
}

Возможно, это ошибка NetBeans?

1 Ответ

1 голос
/ 15 августа 2020

Эту функцию JDK 14 можно использовать только в том случае, если NetBeans 11.3 работает на Java 14 javac, а не на nb- javac, поставляемом с NetBeans 11.3. Также должен быть установлен флаг компилятора java --enable-preview. Подробнее см. https://netbeans.apache.org/download/nb113/index.html. Конечно, запуск NetBeans на javac вместо nb- javac означает потерю преимуществ nb- javac. См. Ссылки в https://blogs.apache.org/netbeans/entry/what-s-nb-javac-in для обсуждения компромиссов. Синтаксис instanceof по-прежнему указан как функция предварительного просмотра в JDK 15, поэтому нет гарантии, что он не изменится в будущих Java версиях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...