根据Java中的某种条件确定实现类

dru*_*ist 5 java class

我有一个接口“ Parent”,并且有多个类(例如Abc.java,Def.java和Xyz.java)实现了该接口。现在我想做这样的事情:

Parent factoryMethod(String condition){
    Parent p = null;
    if(condition.equals("Abc"))
        p = new Abc();
    else if(condition.equals("Def"))
        p = new Def();
    else if(condition.equals("Xyz"))
        p = new Xyz();
    return p;
}
Run Code Online (Sandbox Code Playgroud)

基本上,我将要实例化的类的名称作为参数传递给方法。这样做的最佳方法是什么?我应该为此使用反射吗?它不仅有3个课程,而且可能还有更多。所以我不想写if / else。

谢谢。

aa3*_*333 0

您可以根据要为其创建对象的类的名称来选择要使用的构造函数。就像是:

Class<?> theClass = Class.forName(condition); Constructor<?> theClassConstructor = theClass.getConstructor(); Object object = theClassConstructor.newInstance(new Object[] { args });