instanceofnew

This commit is contained in:
michaelin007
2022-12-08 02:57:05 +00:00
parent 64d4c0ba2e
commit f91d787848
7 changed files with 48 additions and 41 deletions

View File

@@ -0,0 +1,31 @@
package com.baeldung.instanceofalternative.mapmethod;
import java.util.HashMap;
import java.util.Map;
import com.baeldung.instanceofalternative.model.*;
public class MapAlternative {
private Map<Class<? extends Dinosaur>, Movement> movementHandling = new HashMap<Class<? extends Dinosaur>, Movement>();
public MapAlternative() {
movementHandling.put(Anatotitan.class, new Movement() {
public String move(Dinosaur dino) {
return "running";
}
});
movementHandling.put(Euraptor.class, new Movement() {
public String move(Dinosaur dino) {
return "flying";
}
});
}
public String handleMessage(Dinosaur dino) {
Movement handler = movementHandling.get(dino.getClass());
return handler.move(dino);
}
}

View File

@@ -0,0 +1,10 @@
package com.baeldung.instanceofalternative.mapmethod;
import com.baeldung.instanceofalternative.model.*;
public class Movement {
public String move(Dinosaur dino) {
return "default movement";
}
}

View File

@@ -10,7 +10,7 @@ public class EnumUnitTest {
@Test
public void givenADinosaurSpecie_whenGroupBySubclass_thenGetMovementOfEuraptor() {
assertEquals("running", moveDinosaur(DinosaurEnum.Euraptor));
assertEquals("flying", moveDinosaur(DinosaurEnum.Euraptor));
}
@Test

View File

@@ -15,7 +15,7 @@ public class GetClassUnitTest {
@Test
public void givenADinosaurSpecie_whenGroupBySubclass_thenGetMovementOfEuraptor() {
assertEquals("calm", dinoBehavior(new Euraptor()));
assertEquals("flying", dinoBehavior(new Euraptor()));
}
public static String dinoBehavior(Dinosaur dinosaur) {

View File

@@ -8,6 +8,7 @@ import java.util.Map;
import org.junit.Test;
import com.baeldung.instanceofalternative.model.*;
import com.baeldung.instanceofalternative.mapmethod.*;
public class MapUnitTest {
@@ -20,14 +21,12 @@ public class MapUnitTest {
@Test
public void givenADinosaurSpecie_whenGroupBySubclass_thenGetMovementOfEuraptor() {
assertEquals("calm", moveDinosaur(new Euraptor()));
assertEquals("flying", moveDinosaur(new Euraptor()));
}
public static String moveDinosaur(Dinosaur dinosaur) {
Map<Class<? extends Dinosaur>, String> response = new HashMap<Class<? extends Dinosaur>, String>();
response.put(dinosaur.getClass(), dinosaur.move());
return response.get(dinosaur.getClass());
MapAlternative movement = new MapAlternative();
return movement.handleMessage(dinosaur);
}
}

View File

@@ -1,33 +0,0 @@
package com.baeldung.instanceoftest;
import static org.junit.Assert.*;
import org.junit.Test;
import com.baeldung.instanceofalternative.model.*;
public class PatternMatchingUnitTest {
@Test
public void givenADinosaurSpecie_whenGroupBySubclass_thenGetMovementOfAnatotitan() {
assertEquals("running", dinoBehavior(new Anatotitan()));
}
@Test
public void givenADinosaurSpecie_whenGroupBySubclass_thenGetMovementOfEuraptor() {
assertEquals("flying", dinoBehavior(new Euraptor()));
}
public static String dinoBehavior(Dinosaur dinosaur) {
if (dinosaur instanceof Anatotitan anatotitan) {
return anatotitan.run();
} else if (dinosaur instanceof Euraptor euraptor) {
return euraptor.flies();
}
return "";
}
}

View File

@@ -17,7 +17,7 @@ public class PolymorphismUnitTest {
@Test
public void givenADinosaurSpecie_whenGroupBySubclass_thenGetMovementOfEuraptor() {
assertEquals("calm", dinoBehavior(new Euraptor()));
assertEquals("flying", dinoBehavior(new Euraptor()));
}
public static String dinoBehavior(Dinosaur dinosaur) {