inheritance - Java & Guice - 如何处理继承和抽象?

标签 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);
   }
}

最佳答案

取决于你想绑定(bind)什么。如果绑定(bind)BaseA ( 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/

相关文章:

java - 关闭 Quartz 调度程序

Java继承问题: What's the difference and why ? 这给程序员带来了什么优势和灵活性?

C++简单的继承问题

c# - 在扩展方法上注入(inject) DI 服务

java - 有没有办法检查我是否在 Guice 的 servlet 请求中?

java - 为什么我的@singleton 不起作用?

matlab - 没有足够的输入参数继承Matlab

C++ 组合——我必须包装所有这些函数吗?

Angular APP_INITIALIZER 提供程序将一项注入(inject)服务视为未定义,但其他服务注入(inject)得很好

c# - 如何在运行时使用 Ninject 的 DI 动态添加新绑定(bind)?