2012-04-05 81 views
1

我有一個超類,它有自己的嵌套類,它在構造函數中傳遞(/注入爲提供者)。從子類的提供者構造超類提供者

同樣,我有一個自己的嵌套類的子類,它在構造函數中注入(作爲提供者)。 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 SuperClass.Parameters>。「?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

回答

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

遵守父類的構造函數的參數 「延長?」 的區別。