Java 从子类'构造超类提供程序;供应商

Java 从子类'构造超类提供程序;供应商,java,guice,Java,Guice,我有一个超类,它有自己的嵌套类,在构造函数中传递(/作为提供程序注入) 类似地,我有一个子类,它有自己的嵌套类,在构造函数中被注入(作为提供者)。子类.NestedClass扩展了超类.NestedClass public class SuperClass { @Inject SuperClass(Provider<SuperClass.Parameters> superParam) { } public class Parameters { int a;

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

类似地,我有一个子类,它有自己的嵌套类,在构造函数中被注入(作为提供者)。子类.NestedClass扩展了超类.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;
  }
}
公共类超类{
@注入超类(提供程序超参数){
}
公共类参数{
INTA;
}
}
公共类子类扩展了超类{
@注入子参数(提供程序子参数){
//需要使用相应的超类提供程序在此处调用super
}
公共类参数扩展了超类{
int b;
}
}

是否有一种方法可以将Sub.Parameters的提供程序转换为SuperClass.Parameters的提供程序,以便我可以在Sub.Parameters的构造函数中调用super(使用该提供程序)。

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;
  }
}
公共类超类{
//建造师

@Inject SuperClass(Provider自己解决了。SuperClass的构造函数现在将读取@Inject SuperClass(Provider请将其添加为答案并标记为已解决)。回答自己的问题完全合法,这将帮助其他人。谢谢!