Coincidencia de patrones en Java: InstanceOf (JEP 305)

Pattern Matching es una nueva función de vista previa en Java 14.


en vez de


Para comprender mejor esta nueva característica, veamos cómo funciona la instancia de operador . Si ya está familiarizado con él, no dude en pasar a la siguiente sección.


En resumen, verifica si un objeto dado pertenece a un tipo dado. Como resultado de esta comprobación, devuelve verdadero o 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


Registros
mejorados
bloques de texto de cambio


All Articles