1

我有一个超类,它有自己的嵌套类,它在构造函数中传递(/作为提供者注入)。

同样,我有一个带有自己的嵌套类的子类,该子类被注入(作为提供者)在构造函数中。Subclass.NestedClass 扩展了 Superclass.NestedClass。

public class SuperClass {
  @Inject SuperClass(Provider<SuperClass.Parameters> superParam) {
  }

  public class Parameters {
    int a;  
  }
}

public class Sub extends SuperClass {
  @Inject Sub(Provider<Sub.Parameters> subParam) {
     // Need to call super here with the appropriate superclass's provider
  }

  public class Parameters extends SuperClass.Parameters {
    int b;
  }
}

有没有办法可以将 Sub.Parameters 的提供者转换为 SuperClass.Parameters 的提供者,以便我可以在 Sub 的构造函数中调用 super(使用该提供者)。

4

1 回答 1

0

Java 泛型在这里帮助了我。

解决方案:

public class SuperClass {
  // Constructor
  @Inject SuperClass(Provider<? extends SuperClass.Parameters> superParam) {
  }

  public class Parameters {
    int a;  
  }
}

public class Sub extends SuperClass {
  @Inject Sub(Provider<Sub.Parameters> subParam) {
     super(subParam);
  }

  public class Parameters extends SuperClass.Parameters {
    int b;
  }
}

观察超类构造函数的参数“?extends”的区别。

于 2012-04-13T14:59:10.897 回答