我有很多电子邮件课程,EmailA,EmailB,EmailC,EmailD,从抽象电子邮件课程扩展的EmailE。每封电子邮件都可以自动生成其内容,其内容在每个电子邮件类别之间都有所不同。
我想生成类别为EmailXXXXX的x号消息。
他们都有方法generateRandomMessage,所以我想编写一个接受Email类的通用方法,并创建给定电子邮件类的新实例,以从该电子邮件类中获取多个随机消息。
以下是我的尝试,我无法弄清楚如何编写一个接受泛型类并创建类的新实例并调用其方法的方法。
帮助
// Generate X number of message for the given input email class
public void generateEmailData(int numOfMessage, Class<T> emailClass) {
for (int i = 0; i < numOfMessage; i++) {
// Instead of creating generateEmailData method in every email class
// new EmailA().generateRandomMessage();
String message = new emailClass.getClass().().generateRandomMessage();
System.out.println(message);
}
}
答案 0 :(得分:3)
首先,您应该定义绑定到T
参数的某些类型。否则它将在运行时成为Object。
class YourClass <T extends BaseEmailClass>
现在实例化类:
public void generateEmailData(int numOfMessage, Class<T> emailClass) {
for (int i = 0; i < numOfMessage; i++) {
String message = emailClass.newInstance().generateRandomMessage();
System.out.println(message);
}
}
这假设BaseEmailClass
是所有EmailXXXXX
类的常用超类或超级接口,具有generateRandomMessage()
方法。