在 java 14 与 java 17 中使用instanceof

kus*_*ama 4 java oop instanceof

我的代码在 java 17 上的 intellij 中运行,但在 java 14 上返回以下行的错误:

if (this.areas.get(i) instanceof Habitat area) {

返回错误:

java:instanceof中的模式匹配是预览功能,默认情况下处于禁用状态。

如何调整这一行以便它在 java 14 中工作?我知道我使用此功能的方式仅适用于 java 16+。

Daw*_*ica 7

你有两个选择。

(1) 您可以在Java 14中启用预览功能,通过编译

javac MainClass.java --enable-preview --release 14
Run Code Online (Sandbox Code Playgroud)

并与运行

java MainClass --enable-preview
Run Code Online (Sandbox Code Playgroud)

(2) 你写的这行与此等效。

if (this.areas.get(i) instanceof Habitat) {
    Habitat area = (Habitat) this.areas.get(i);

    // ... more here
Run Code Online (Sandbox Code Playgroud)

当然,假设这种get方法没有任何令人讨厌的副作用。如果您不想启用预览功能,可以这样做。