diff --git a/core-java-modules/core-java-14/src/main/java/com/baeldung/java14/patternmatchingforinstanceof/PatternMatchingForInstanceOf.java b/core-java-modules/core-java-14/src/main/java/com/baeldung/java14/patternmatchingforinstanceof/PatternMatchingForInstanceOf.java new file mode 100644 index 0000000000..11026f45f9 --- /dev/null +++ b/core-java-modules/core-java-14/src/main/java/com/baeldung/java14/patternmatchingforinstanceof/PatternMatchingForInstanceOf.java @@ -0,0 +1,26 @@ +package com.baeldung.java14.patternmatchingforinstanceof; + +public class PatternMatchingForInstanceOf { + + public void performAnimalOperations(Animal animal) { + if (animal instanceof Cat cat) { + cat.meow(); + } else if(animal instanceof Dog dog) { + dog.woof(); + } + } + + abstract class Animal { + } + + final class Cat extends Animal { + void meow() { + } + } + + final class Dog extends Animal { + void woof() { + } + } + +} diff --git a/core-java-modules/core-java-14/src/test/java/com/baeldung/java14/patternmatchingforinstanceof/PatternMatchingForInstanceOfUnitTest.java b/core-java-modules/core-java-14/src/test/java/com/baeldung/java14/patternmatchingforinstanceof/PatternMatchingForInstanceOfUnitTest.java new file mode 100644 index 0000000000..0270e34dec --- /dev/null +++ b/core-java-modules/core-java-14/src/test/java/com/baeldung/java14/patternmatchingforinstanceof/PatternMatchingForInstanceOfUnitTest.java @@ -0,0 +1,33 @@ +package com.baeldung.java14.patternmatchingforinstanceof; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import org.junit.jupiter.api.Test; + +import com.baeldung.java14.patternmatchingforinstanceof.PatternMatchingForInstanceOf.Cat; +import com.baeldung.java14.patternmatchingforinstanceof.PatternMatchingForInstanceOf.Dog; + +class PatternMatchingForInstanceOfUnitTest { + + @Test + void givenAnAnimal_whenTypeIsCat_ThenCatGoesMeow() { + Cat animal = mock(Cat.class); + + PatternMatchingForInstanceOf instanceOf = new PatternMatchingForInstanceOf(); + instanceOf.performAnimalOperations(animal); + + verify(animal).meow(); + } + + @Test + void givenAnAnimal_whenTypeIsDog_ThenDogGoesWoof() { + Dog animal = mock(Dog.class); + + PatternMatchingForInstanceOf instanceOf = new PatternMatchingForInstanceOf(); + instanceOf.performAnimalOperations(animal); + + verify(animal).woof(); + } + +}