Java 从子类'构造超类提供程序;供应商
我有一个超类,它有自己的嵌套类,在构造函数中传递(/作为提供程序注入) 类似地,我有一个子类,它有自己的嵌套类,在构造函数中被注入(作为提供者)。子类.NestedClass扩展了超类.NestedClassJava 从子类'构造超类提供程序;供应商,java,guice,Java,Guice,我有一个超类,它有自己的嵌套类,在构造函数中传递(/作为提供程序注入) 类似地,我有一个子类,它有自己的嵌套类,在构造函数中被注入(作为提供者)。子类.NestedClass扩展了超类.NestedClass public class SuperClass { @Inject SuperClass(Provider<SuperClass.Parameters> superParam) { } public class Parameters { int a;
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请将其添加为答案并标记为已解决)。回答自己的问题完全合法,这将帮助其他人。谢谢!