java-如何用guice替换反射?

我长期以来使用反射将模块与“处理程序”分离.

我有一个这样设计的代码库:

static enum AnimalHandlers {
  Dog(Dog.class),
  Cat(Cat.class);

  private final Class c; 

  AnimalHandlers(Class class)
  {
    this.c=class;
  } 

  public Class getAnimalHandler()
  {
    return c;
  }
}

然后,在我的代码的后面,我有一个方法将“动物”枚举作为输入并使用反射(即,它从枚举中获取类并调用“ newInstance”)来调用必要的处理程序.

我认为,使用Guice解决方案会更干净.如何摆脱枚举/反射,仅使用guice通过特定于域的逻辑处理程序来“控制”我的控制模块?

解决方法:

您可以很好地使用MapBinder< AnimalEnum,AnimalHandler&gt ;,并为每个可能的AnimalEnum值定义一个绑定.

上一篇:Google Guice之绑定方式


下一篇:java-使用Guice注入运行时生成的值