我有一个Forum
类与一些子类,并且我将子类名称作为一个字符串字段存储在数据库沿所有其他字段。当我检索该对象时,我希望它成为同一类的实例。我可以做很多if-else语句来查找要调用哪个子类构造函数,但是它不容易扩展。决定在执行时间实例化哪个子类
我发现这个解决方案,但感觉莫名其妙脏:
public static Forum createForum(int forumId, String kind) {
try {
Class cls = Class.forName("forum."+kind);
Constructor ct = cls.getConstructor(Integer.TYPE, String.class);
Object retobj = ct.newInstance(forumId, kind);
return (Forum) retobj;
}
catch (Throwable e) {
System.err.println(e);
}
return null;
}
有没有更好的解决办法?
谢谢。
您也可以在这里使用'int.class'而不是'Integer.TYPE'。 – 2011-04-18 22:54:26