在下面的代码中,是否需要用“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);
}
}
最佳答案
取决于你想绑定(bind)什么。如果绑定(bind)Base
至A
( bind(Base.class).to(A.class)
),那么是的,需要第二个构造函数和 @Inject,但 Base 上的不是。如果您还打算 build Base
,您需要 @Inject
.
关于调用 super()
, 如果你只有一个带有 IConfig 的构造函数,Java 需要它(这与 Guice 无关)。但是,如果您不需要注入(inject) IConfig
,没有什么能阻止您将其删除。在 Base
.
关于inheritance - Java & Guice - 如何处理继承和抽象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9451527/