当超级class使用@Inject时,我如何构造一个class?
How can I construct a class when the super class uses @Inject?
我有以下代码:
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
注入其中。在 class B
中我不能调用 super()
因为 AbstractClass
在构造函数中有一个参数。我如何处理 subclass 中 superclass 的依赖注入以使 super()
工作?
如何在superclass使用@Inject
时构造class?
您还需要接受 A
:
@Inject
B(A a, D d) {
super(a);
this.d = d;
}
然后 Guice 应该注入 A
和 D
,你只需将 A
传递给超类构造函数。仅仅因为一个构造函数被标记为 @Inject
并不意味着它可以 只有 被 Guice 调用......事实上,我实际上会从中删除 @Inject
AbstractClass
- 除非 Guice 有一些我不知道的魔法,否则无论如何它都无法注入。
我有以下代码:
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
注入其中。在 class B
中我不能调用 super()
因为 AbstractClass
在构造函数中有一个参数。我如何处理 subclass 中 superclass 的依赖注入以使 super()
工作?
如何在superclass使用@Inject
时构造class?
您还需要接受 A
:
@Inject
B(A a, D d) {
super(a);
this.d = d;
}
然后 Guice 应该注入 A
和 D
,你只需将 A
传递给超类构造函数。仅仅因为一个构造函数被标记为 @Inject
并不意味着它可以 只有 被 Guice 调用......事实上,我实际上会从中删除 @Inject
AbstractClass
- 除非 Guice 有一些我不知道的魔法,否则无论如何它都无法注入。