我的代码在Java 17上的IntelliJ中运行良好,但在Java 14上返回以下行的错误:
if (this.areas.get(i) instanceof Habitat area) {
它会返回以下错误:
java: pattern matching in instanceof is a preview feature and is disabled by default.
如何调整此行以使其在Java 14中正常工作?我知道我使用这个特性的方式只适用于Java 16及以上版本。
我的代码在Java 17上的IntelliJ中运行良好,但在Java 14上返回以下行的错误:
if (this.areas.get(i) instanceof Habitat area) {
它会返回以下错误:
java: pattern matching in instanceof is a preview feature and is disabled by default.
如何调整此行以使其在Java 14中正常工作?我知道我使用这个特性的方式只适用于Java 16及以上版本。
您有两个选项。
(1) 您可以启用Java 14中的预览功能,方法是使用以下编译命令:
javac MainClass.java --enable-preview --release 14
并运行
java MainClass --enable-preview
(2) 你写的那行代码等同于这行代码。
if (this.areas.get(i) instanceof Habitat) {
Habitat area = (Habitat) this.areas.get(i);
// ... more here
get
方法没有任何负面影响。如果你不想启用预览功能,就可以按照以下步骤进行操作。传统的方法是测试 instanceof 然后将其转换为所需的类型:
if(this.areas.get(i) instanceof Habitat) {
Habitat area = (Habitat) this.areas.get(i);
// rest of the if block
area
并进行转换。 - Dawood ibn Kareem