第1个回答 2010-05-21
可以用反射来做,比如有个类叫Snake Class.forName("Snake").newInstance();这样可以获得该类实例,前提是有一个无参数构造函数来支持反射
有或者维护一个类名数组并根据一个创建器(工厂)来返回实例
比如classes = {"Snake","Fish"}
再写一个方法create(int classId){
switch(classId)
case 0: return new Snake();
case 1: return new Fish();
}
输入字符串BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String s = in.readLine();
for(int i= 0,n=classes.length();i<n;i++){
if(classes[i].equals(s)){
create(i);
}
}
仅仅提供一些参考希望对能给你启发
第2个回答 2010-05-21
String[] classNames = new String[] {"C1", "C2"};
Object[] results = new Object[classNames.length];
int i = 0;
for (String cn : classNames) {
Object o = Class.forName(cn).newInstance();
results[i++] = o;
}
手写的,不知道对不对,大概思路是这样的
Class.forName(cn).newInstance();