java - 如何用 guice 替换反射?

标签 java reflection dependency-injection 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;
  }
}

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

我认为使用 Guice 的解决方案会更简洁。我怎样才能摆脱枚举/反射并简单地使用 guice 将我的控制模块与域特定的逻辑处理程序“混合”?

最佳答案

你可以使用 MapBinder<AnimalEnum, AnimalHandler> ,并为每个可能的 AnimalEnum 定义一个绑定(bind)值(value)。

关于java - 如何用 guice 替换反射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7868878/

相关文章:

Java 反射 : Count of methods with an annotation?

c# - 如何使用 Unity 2.0 注入(inject) Log4Net ILog 实现

java - Java中不可修改的列表

java - 使用反射设置值时遇到的问题

c# - 以反射方式将一个事件直接连接到另一个事件

C# 类型比较

c# - 如何在责任链中注入(inject)下一个处理程序的依赖?

c# - Typedefs、C++/CLI、C# + 依赖注入(inject)

Java switch 语句绕过所有情况,甚至默认情况

java - Android AsyncTask 的执行后显示alertDialog