2011-10-03 27 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