我有一个名为
的预定义类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.
}
答案 0 :(得分:0)
您无法在运行时决定泛型类型,因为泛型主要在编译时使用。因此,如果您不知道确切的类型参数,请使用?
答案 1 :(得分:0)
你可以:
?
,正如Bozho所说? extends WrapperBean
SubjectN
类继承一个公共超类型,并且所有RecipientN
类都继承一个公共超类型