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

Java中基于外部xml的运行时类实例化,java,reflection,dependency-injection,xml-parsing,factory,Java,Reflection,Dependency Injection,Xml Parsing,Factory,我有一个xml文件,其中包含我想要解析并读入程序的数据,这样我就可以实例化一个类 问题是,我要实例化哪个类直到运行时才知道 我的xml有点像下面这样 <dataitem class="FooClass"> <dataitem class="BarClass"> public class FooBarFactory { FooBarInterface makeClass(String s){ if(s.equals("FooClass")){

我有一个xml文件,其中包含我想要解析并读入程序的数据,这样我就可以实例化一个类

问题是,我要实例化哪个类直到运行时才知道

我的xml有点像下面这样

<dataitem class="FooClass">
<dataitem class="BarClass">
public class FooBarFactory {
    FooBarInterface makeClass(String s){
        if(s.equals("FooClass")){
            return new FooClass();
        }
        if(s.equals("BarClass")){
            return new BarClass();
        }
}
事实上,工厂可能会返回很多潜在的类。有没有一种方法可以获得这种行为,而不必为每个可能的类使用条件语句?如果没有,我的想法是正确的还是有更好的方法

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

我没有显示它,但是您需要处理一些已检查的异常,例如
ClassNotFoundException
IllegalAccessException
,以及
InstantiationException

@SamJudge No problem。乔什·布洛赫(Josh Bloch)的优秀著作《有效Java(2e)》第53项提到了这一点,我昨天刚刚重读了这本书。:-)强烈推荐。我得看一看。“我过去没有使用过太多的反射。@顺便说一句,第53项是关于最小化反射的使用。这是一个罕见的例子,尽管存在风险,但它可能是值得的。