我长期以来一直使用反射来将模块与“处理程序”分离。
我有一个这样构建的代码库:
static enum AnimalHandlers {
Dog(Dog.class),
Cat(Cat.class);
private final Class c;
AnimalHandlers(Class class)
{
this.c=class;
}
public Class getAnimalHandler()
{
return c;
}
}
然后在我的代码的后面,我有一个方法,它将“Animal”枚举作为输入并使用反射(即,它从枚举中获取类并调用“newInstance”)来调用必要的处理程序。
我认为使用 Guice 的解决方案会更简洁。我怎样才能摆脱枚举/反射并简单地使用 guice 将我的控制模块与域特定的逻辑处理程序“混合”?
最佳答案
你可以使用 MapBinder<AnimalEnum, AnimalHandler>
,并为每个可能的 AnimalEnum
定义一个绑定(bind)值(value)。
关于java - 如何用 guice 替换反射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7868878/