从子类的提供者构造超类提供者

问题描述:

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

同样,我有一个自己的嵌套类的子类,它在构造函数中注入(作为提供者)。 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的供应商的供应商,这样我可以在子的构造函数中调用超(与供应商)。

+0

自己弄明白了。 Superclass的构造函数现在将读取@Inject SuperClass(Provider 。“?extends”解决了我的问题。 – Bajji 2012-04-05 03:55:29

+0

请添加它作为答案并将其标记为已解决。回答自己的问题完全合法,它将有助于其他。谢谢! – janhink 2012-04-13 11:05:07

+0

@eQui完成。谢谢! – Bajji 2012-04-13 14:59:41

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; 
    } 
} 

遵守父类的构造函数的参数 “延长?” 的区别。