Correspondência de padrões em Java: InstanceOf (JEP 305)

A Correspondência de Padrões é um novo recurso de visualização no Java 14.


instancia de


Para entender melhor esse novo recurso, vamos ver como a instância do operador funciona . Se você já conhece, sinta-se à vontade para passar para a próxima seção.


Em resumo, verifica se um determinado objeto pertence a um determinado tipo. Como resultado dessa verificação, ele retorna verdadeiro ou falso .


    if(animal instanceof Cat) {
      // It is a cat! Do something
    } else {
      // It is not a cat, do something else
    }

true, . false.


instanceof



. Animal — , : Cat Dog.


public String getAnimalSound(Animal animal) {
    if(animal instanceof Cat) {
        Cat cat = (Cat)animal;
        return cat.meow();
    } else if (animal instanceof Dog) {
        Dog dog = (Dog)animal;
        return dog.bark();
    }
    throw new UnknownAnimalException();
}

animal . animal Cat, , «». Dog, . Animal, , :


  1. -, , animal , instanceof.
  2. Cat Dog.
  3. animal .

Cat Dog. .


, . . , , Cat Dog.


, Java 14 instanceof, JEP 305. , .



Java 14 .


// Before Java 14
if(animal instanceof Cat) {
    Cat cat = (Cat)animal;
    return cat.meow();
}

//After
if(animal instanceof Cat cat) {
    return cat.meow();
}

:


  1. cat, .
  2. . cat, Cat.
  3. cat if.

, , .



, if:


if(animal instanceof Cat cat) {
    return cat.meow();
} else {
    // Can't use cat here
}
// Can't use cat here either

, if, , AND/OR.


if(animal instanceof Cat cat && cat.isAlive()) {
    return cat.meow();
}

instanceof, &&, cat, Cat, Animal.


IDEA


, IntelliJ IDEA , 2020.1 ( Java 14, Records Switch).



!


, JDK 14.



instanceof Java 14. (Preview feature). ?


VM — Java SE, , , . JDK ; , Java SE.

JDK , , Java SE , , . , ( ), ( ), .

JDK, . . , , , .


IntelliJ IDEA


IntelliJ IDEA File → Project Structure.




, , javac:


javac --release 14 --enable-preview ...

. --enable-preview


java --enable-preview ...

Maven


Maven :


<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <release>14</release>
                <compilerArgs>
                    --enable-preview
                </compilerArgs>
```14</source>
                <target>14</target>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <argLine>--enable-preview</argLine>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <configuration>
                <argLine>--enable-preview</argLine>
            </configuration>
        </plugin>
    </plugins>
</build>

Java 14


Registra blocos de texto
aprimorados de chave


All Articles