2011-10-03 48 views
0

泛型類的類型我有一個名爲如何通過在Java

ParameterList<Recipient_Type,Subject_Type> { 
//some code here... 
} 

預先定義的類,它是通用採取收件人型和主題型。我有一個對象調用對應這已經得到了setter方法來設置不同類型的收件人像

correspondence.setRecipient1((Recipient1)recipient), 
correspondence.setRecipient2((Recipient2)recipient), 
correspondence.setRecipient3((Recipeint3)recipient). 

所以基本上設置不同類型的科目,如

correspondence.setSubject1((Subject1)subject) 
correspondence.setSubject2((Subject2)subject). 

和類似的方法我有2種不同的主題類型和3種不同類型的收件人。直到這部分代碼我不能改變任何東西,因爲它的一些現有的框架代碼。

現在我有一個下面的方法,它將我的通信對象作爲參數,並需要實例化ParameterList類,傳遞正確的主題和收件人類型。通信對象上只能設置一個主題和收件人。所以在下面的方法

public void doTheJob(Correspondence correspondence){ 
    //How do I instantiate the ParameterList class provided subject can be any one of the two 
    //and recipient can be any one of the three. 
} 
+2

我希望看到您的代碼而不是閱讀它的說明;) – Bozho

+0

是我現在看起來好多了的問題陳述... – user977263

回答

0

你不能在運行時決定泛型類型,因爲泛型主要用於編譯時。所以,如果你不知道確切的類型參數,使用?

+0

您是否要將ParameterList 更改爲ParameterList 。 – user977263

+0

不,但是當你實例化使用'?' – Bozho

+0

如果我將使用'?'當實例化'ParameterList'時,我如何傳遞正確類型的主題和接收者。雖然實例化它應該採取正確的主題和收件人類型。正確?這就是整個想法。 – user977263

0

您可以:

  • 使用?,作爲Bozho說
  • 使用(略)更具體的? extends WrapperBean
  • 重構(如果可能),以便所有SubjectN類繼承一個共同的超類型,並且所有類都繼承一個公共超類型
+0

Subject1將如何繼承Subject_Type? Subject1是一個類,Subject_Type是不同類的泛型類型參數。 – user977263

+0

是否有任何接口或所有主體繼承的超類型?有沒有任何接口或超類型的所有收件人繼承? –

+0

是的,Subject和Recipients都從一個名爲WrapperBean的超類型繼承。 – user977263