java - 抽象类中字段的 GIN 注入(inject)

标签 java gwt dependency-injection guice gwt-gin

我正在处理一些 GWT 应用程序,其中有一个层次结构,其中有一个抽象演示者,具有派生类的一些常见功能。像这样的东西:

public abstract class MyAbstractPresenter<T extends MyAbstractPresenter.CustomDisplay> extends Presenter<T>
{
public interface CustomDisplay extends View
{
  //some methods
}

//I want to inject this element
@Inject
private CustomObject myObj;

public MyAbstractPresenter(T display)
{
   super(display);
}
}

所有子类都被正确注入(inject)。但是,我希望能够注入(inject)该特定字段,而无需将其添加到子类的构造函数中。我尝试进行字段注入(inject),如您所见,但它不起作用,因为它是被注入(inject)的子类。

是否有一种正确的方法可以在不让子类知道该字段存在的情况下实现此注入(inject)?

最佳答案

显然,目前 GIN 还不支持这种类型的行为。解决方法是在具体类构造函数中注入(inject)所需的字段,即使它们不需要它。像这样的东西:

 public abstract class MyAbstractPresenter<T extends MyAbstractPresenter.CustomDisplay> extends Presenter<T>
 {
   public interface CustomDisplay extends View
   {
     //some methods
   }

   //I wanted to inject this element
   private final CustomObject myObj;

   public MyAbstractPresenter(T display, CustomObject obj)
   {
      super(display);
      myObj = obj;
   }
}

然后在任何扩展此抽象实现的类中,我都必须在构造时传递它。

public abstract class MyConcretePresenter extends MyAbstractPresenter<MyConcretePresenter.CustomDisplay>
{
  public interface CustomDisplay extends MyAbstractPresenter.CustomDisplay
  {
     //some methods
  }

 @Inject  //it would get injected here instead.
 public MyConcretePresenter(CustomDisplay display, CustomObject obj)
 {
     super(display, obj);
 }
}

关于java - 抽象类中字段的 GIN 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14563148/

相关文章:

java - 需要正则表达式专业知识

字符串的 Java GC 调优

java - 我什么时候应该在 Java try-catch-finally 中使用 finally-block

gwt - 在 Play 应用程序中测试 GWT 模块

java - GWT 2.5+ 有 "Authentication Framework"吗?

GWT 和 GXT 哪个更好?

asp.net - DbContext 在 ActionFilterAttribute 中处置,不会在后续请求中重新加载

java - 如何将基本的 GWT 组件与 GIN 绑定(bind)?

java - 区分读取文件和方法中的用户输入

java - spring中使用xml注入(inject)依赖为什么需要setter?