如何在java中传递泛型类类型

时间:2011-10-03 19:51:09

标签: java generics

我有一个名为

的预定义类
ParameterList<Recipient_Type,Subject_Type> {
//some code here...
}

是获取收件人类型和主题类型的通用选项。我有一个叫做对应的对象,它有一些用于设置不同类型主题的setter方法,比如

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

用于设置不同类型收件人的类似方法,例如

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

所以基本上我有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 个答案:

答案 0 :(得分:0)

您无法在运行时决定泛型类型,因为泛型主要在编译时使用。因此,如果您不知道确切的类型参数,请使用?

答案 1 :(得分:0)

你可以:

  • 使用?,正如Bozho所说
  • 使用(稍微)更具体的? extends WrapperBean
  • 重构(如果可能),以便所有SubjectN类继承一个公共超类型,并且所有RecipientN类都继承一个公共超类型