我有一个接口“ 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。
谢谢。
您可以根据要为其创建对象的类的名称来选择要使用的构造函数。就像是:
Class<?> theClass = Class.forName(condition);
Constructor<?> theClassConstructor = theClass.getConstructor();
Object object = theClassConstructor.newInstance(new Object[] { args });
归档时间: |
|
查看次数: |
1481 次 |
最近记录: |