我有以下代码:
public abstract class AbstractClass<T> {
final A a;
@Inject
AbstractClass(A a) {
this.a = a;
}
}
public class B extends AbstractClass<C> {
final D d;
@Inject
B(D d) {
super(); // this fails
this.d = d;
}
}
我的class B
扩展AbstractClass
而AbstractClass
使用@Inject
向其中注入A
。在课程B
中,我无法调用super()
,因为AbstractClass
在构造函数中有一个参数。如何处理子类中超类的依赖注入以使super()
正常工作?
当超类使用@Inject
时如何构建类?
答案 0 :(得分:4)
您还需要接受A
:
@Inject
B(A a, D d) {
super(a);
this.d = d;
}
然后Guice应该注入A
和D
,然后将A
传递给超类构造函数。仅仅因为构造函数标有@Inject
并不意味着Guice只能调用 ...事实上,我实际上会从{{1}删除@Inject
- 除非Guice有一些我不知道的魔法,否则它无论如何都无法注入。