运行-time class实例化基于外部xml in Java

Run-time class instantiation based on external xml in Java

我有一个 xml 文件,其中包含我要解析并读入我的程序的数据,因此我可以实例化一个 class。

问题是,class 我想实例化哪个直到运行时才知道。

我的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();
        }
}

实际上,工厂 return 有很多潜力 classes。有没有一种方法可以获得这种行为,而不必为每个可能的 class 使用条件语句?如果不是,我的想法是否正确,或者有更好的方法吗?

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

我没有显示它,但你需要处理一些已检查的异常,例如 ClassNotFoundExceptionIllegalAccessExceptionInstantiationException