我有一个超类,它有自己的嵌套类,在构造函数中传递(/作为提供者注入)。
类似地,我有一个子类,它有自己的嵌套类,它在构造函数中被注入(作为提供者)。 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的Provider转换为SuperClass.Parameters的提供者,这样我就可以在Sub的构造函数中调用super(使用该提供者)。
答案 0 :(得分: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”的区别。