ary*_*axt 5 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);
}
}
Run Code Online (Sandbox Code Playgroud)
取决于你想绑定什么。如果绑定Base
到A
( bind(Base.class).to(A.class)
),那么是的,需要第二个构造函数和 @Inject,但不需要 Base 上的构造函数和 @Inject。如果您还计划构建Base
,则需要@Inject
.
关于对 的调用super()
,如果您只有一个带有 IConfig 的构造函数,则 Java 需要它(这与 Guice 无关)。但如果您不需要注入,则没有什么可以阻止您将其IConfig
删除Base
。