java - instanceof 的使用在 NetBeans 11.3 + OpenJDK 14 中
问题描述
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 错误?
解决方案
仅当 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 版本中不会改变。
推荐阅读
- php - 无法对自定义帖子类型查询进行分页
- javascript - 如何在 LeafletJs 中使用 imageOverlay 设置图像而不调整大小
- elasticsearch - 在 Elasticsearch 中,如何获取特定用户的文档的平均时间差异?
- r - 如何制作分数条形图?
- c++ - 确定系统制表位长度
- java - 运行 Maven 构建时出现 PermGen 空间错误
- c# - Excel VSTO 插件,使用 XML 功能区右键单击自定义弹出菜单
- python - 避免在 python 导入中重复命名空间元素
- c++ - 如何修复我的 C++ Connect4 checkGameOver 函数
- ssas - 基于 SSAS 计算度量的 SSAS 维度属性