我花了一段时间才从阅读本文中得出您真正要的东西。
我的解释是,您有一组POJO类,在将这些类传递给服务时,您希望该服务能够根据传递给它的特定POJO类执行不同的操作。
通常,我会尽量避免使用宽泛或较深的类型层次结构,并处理需要一种或两种情况的instanceof等。
无论出于什么原因,当必须有一个宽泛的类型层次结构时,我可能会使用下面的处理程序模式。
class Animal {}class Cat extends Animal {}interface AnimalHandler { void handleAnimal(Animal animal);}class CatHandler implements AnimalHandler { @Override public void handleAnimal(Animal animal) { Cat cat = (Cat)animal; // do something with a cat }}class AnimalServiceImpl implements AnimalHandler { Map<Class,AnimalHandler> animalHandlers = new HashMap<Class, AnimalHandler>(); AnimalServiceImpl() { animalHandlers.put(Cat.class, new CatHandler()); } public void handleAnimal(Animal animal) { animalHandlers.get(animal.getClass()).handleAnimal(animal); }}


