我有一个xml文件,其中包含我要解析并读入我的程序的数据,因此我可以实例化一个类。
问题是,我希望实例化的类在运行时才会知道。
我的xml有点像下面。
<dataitem class="FooClass">
<dataitem class="BarClass">
类将共享一个公共接口。 目前我让Factory做下面的事情。
public class FooBarFactory {
FooBarInterface makeClass(String s){
if(s.equals("FooClass")){
return new FooClass();
}
if(s.equals("BarClass")){
return new BarClass();
}
}
实际上,工厂可以返回很多潜在的类别。有没有办法获得这种行为,而不必为每个潜在的类使用条件语句?如果没有,我的想法是正确的还是更好的方法呢?
答案 0 :(得分:1)
public class FooBarFactory {
FooBarInterface makeInstance(String s) {
return Class.forName(s).newInstance();
}
}
我没有显示,但您需要处理一些已检查的例外情况,例如ClassNotFoundException
,IllegalAccessException
和InstantiationException
。