当超类使用 @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扩展了AbstractClassAbstractClass使用@InjectA注入其中。在类 B 中,我无法调用super() AbstractClass因为它在构造函数中有一个参数。如何处理子类中超类的依赖注入以使super()正常工作?

当超类使用 @Inject 时如何构造类?

您还需要接受A

@Inject
B(A a, D d) {
  super(a);
  this.d = d;
}

然后 Guice 应该同时注入AD,您只需将A传递给超类构造函数即可。仅仅因为构造函数标有 @Inject并不意味着它只能由 Guice 调用......事实上,我实际上会从AbstractClass中删除@Inject - 除非Guice有一些我不知道的魔法,否则无论如何它都无法注入它。

相关内容

  • 没有找到相关文章

最新更新