【问题标题】:Usage of instanceof <pattern> in NetBeans 11.3 + OpenJDK 14在 NetBeans 11.3 + OpenJDK 14 中使用 instanceof <pattern>
【发布时间】:2020-05-07 09:56:38
【问题描述】:

OpenJDK 更新到 14 后,instanceof 语法被扩展,所以现在我们可以使用模式:RelationalExpression instanceof Pattern。更多信息here。在 NetBeans 11.3 中,我注意到此方法附近的提示 instanceof &lt;pattern&gt; 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 的错误?

【问题讨论】:

    标签: java instanceof


    【解决方案1】:

    仅当 NetBeans 11.3 本身在 Java 14 javac 上运行时才能使用此 JDK 14 功能,而不是在与 NetBeans 11.3 一起打包的 nb-javac 上运行。还必须设置 java 编译器的 --enable-preview 标志。有关详细信息,请参阅https://netbeans.apache.org/download/nb113/index.html。当然,在 javac 而不是 nb-javac 上运行 NetBeans 意味着失去 nb-javac 的优势。有关权衡的讨论,请参阅https://blogs.apache.org/netbeans/entry/what-s-nb-javac-in 中的链接。 instanceof 语法仍被列为 JDK 15 中的预览功能,因此无法保证它不会在未来的 Java 版本中发生变化。

    【讨论】:

      猜你喜欢
      • 2020-07-02
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      • 2020-09-07
      • 1970-01-01
      • 2020-07-26
      • 2015-01-20
      相关资源
      最近更新 更多