Java& Guice - 如何处理继承和抽象?

时间:2012-02-26 08:07:12

标签: inheritance dependency-injection guice

在下面的代码中,是否需要使用“Inject”来注释我的基类的构造函数?如果基类是抽象类怎么办?

使用DI时是否需要在构造函数中调用super?

public class Base {

   @Inject
   public Base(IConfig config) {
      // Do stuff
   }
}

public class A extends Base {

   @Inject
   public A(IConfig config) {
      super(config);
   }
}

1 个答案:

答案 0 :(得分:4)

取决于你想要绑定的内容。如果将Base绑定到Abind(Base.class).to(A.class)),那么是,需要第二个构造函数和@Inject,但Base上的那个不是。如果您还计划构建Base,则需要@Inject

关于对super()的调用,如果只有一个带有IConfig的构造函数,Java需要它(这与Guice无关)。但是,如果您不需要在IConfig中注入Base,则无法阻止您删除它。