确定在执行时实例哪个子类
我有一个带有一些子类的
Forum
类,并将子类名称作为String字段与所有其他字段一起存储在数据库中。当我检索对象时,我希望它成为原来相同类的实例。我可以做很多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;
}
有更好的解决方案吗?
谢谢。
没有找到相关结果
已邀请:
3 个回复
闲窍
如果不同的子类构造函数需要不同的参数,事情将变得更加困难。但是,这对于您的反射解决方案也是有问题的。 从长远来看,使用ORM(例如Hibernate)可能会提供更优雅的解决方案。
很缴
董碘奴星