基于Java中的外部xml的运行时类实例化

时间:2015-02-02 04:58:47

标签: java reflection dependency-injection xml-parsing factory

我有一个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();
        }
}

实际上,工厂可以返回很多潜在的类别。有没有办法获得这种行为,而不必为每个潜在的类使用条件语句?如果没有,我的想法是正确的还是更好的方法呢?

1 个答案:

答案 0 :(得分:1)

public class FooBarFactory {
  FooBarInterface makeInstance(String s) {
    return Class.forName(s).newInstance();
  }
}

我没有显示,但您需要处理一些已检查的例外情况,例如ClassNotFoundExceptionIllegalAccessExceptionInstantiationException