您可以使用abstract factory pattern。
创建一个抽象的Factory 类[或接口],以及扩展它的类:MyObject1Factory、MyObject2Factory、...
在预处理时,将 String 中的 Map<String,Factory> 填充到对应的 Factory 实例中,这在您的应用程序中只执行一次。
当您需要创建新实例时 - 调用 map.get(string).create() 以创建相关类型的相关对象。
编辑:带代码的小例子:
您的课程是:
public static class MyBase {
@Override
public String toString() {
return "Base";
}
}
public static class Class1 extends MyBase {
@Override
public String toString() {
return "Class1";
}
}
public static class Class2 extends MyBase {
@Override
public String toString() {
return "Class2";
}
}
您的工厂将是:
public static abstract class MyFactory {
public abstract MyBase build();
}
public static class MyFactory1 extends MyFactory {
@Override
public Class1 build() {
return new Class1();
}
}
public static class MyFactory2 extends MyFactory {
@Override
public Class2 build() {
return new Class2();
}
}
在程序生命周期内仅填充一次地图:
Map<String,MyFactory> map = new HashMap<String, Test.MyFactory>();
map.put("class1", new MyFactory1());
map.put("class2", new MyFactory2());
当你需要一个新对象时,调用:
MyBase obj = map.get(s).build();
System.out.println(obj);
(*) 注意:类的 static 关键字在这里是因为我将它们创建为内部类 - 当然,如果不是你的情况,你需要省略它......