从子类的提供者构造超类提供者
问题描述:
我有一个超类,它有自己的嵌套类,它在构造函数中传递(/注入为提供者)。从子类的提供者构造超类提供者
同样,我有一个自己的嵌套类的子类,它在构造函数中注入(作为提供者)。 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的供应商的供应商,这样我可以在子的构造函数中调用超(与供应商)。
答
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;
}
}
遵守父类的构造函数的参数 “延长?” 的区别。
自己弄明白了。 Superclass的构造函数现在将读取@Inject SuperClass(Provider 。“?extends”解决了我的问题。 – Bajji 2012-04-05 03:55:29
请添加它作为答案并将其标记为已解决。回答自己的问题完全合法,它将有助于其他。谢谢! – janhink 2012-04-13 11:05:07
@eQui完成。谢谢! – Bajji 2012-04-13 14:59:41