instanceof <pattern> 在 NetBeans 11.3 + OpenJDK 14 中的用法
Usage of instanceof <pattern> in NetBeans 11.3 + OpenJDK 14
OpenJDK 更新到 14 后,扩展了 instanceof
语法,所以现在我们可以使用模式:RelationalExpression instanceof Pattern
。更多信息 here。在 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 功能,而不是 nb-javac 打包的 nb-javac网豆 11.3。 java 编译器的 --enable-preview 标志也必须设置。有关 trade-offs 的讨论,请参阅 https://netbeans.apache.org/download/nb113/index.html for details. Of course, running NetBeans on javac instead of nb-javac means losing the nb-javac advantages. See the links in https://blogs.apache.org/netbeans/entry/what-s-nb-javac-in。 instanceof 语法在 JDK 15 中仍列为预览功能,因此不能保证它在未来的 Java 版本中不会更改。
OpenJDK 更新到 14 后,扩展了 instanceof
语法,所以现在我们可以使用模式:RelationalExpression instanceof Pattern
。更多信息 here。在 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 功能,而不是 nb-javac 打包的 nb-javac网豆 11.3。 java 编译器的 --enable-preview 标志也必须设置。有关 trade-offs 的讨论,请参阅 https://netbeans.apache.org/download/nb113/index.html for details. Of course, running NetBeans on javac instead of nb-javac means losing the nb-javac advantages. See the links in https://blogs.apache.org/netbeans/entry/what-s-nb-javac-in。 instanceof 语法在 JDK 15 中仍列为预览功能,因此不能保证它在未来的 Java 版本中不会更改。