在Java中,如何创建一个类的新实例,在代码运行之前不会选择该类?
List<Class> classes = new ArrayList<>();
classes.add(String.class);
classes.add(ArrayList.class);
classes.add(Integer.class);
classes.add(Random.class);
Random r = new Random();
Class c = classes.get(r.nextInt(classes.size()));
Object o = // new instance of "c"
答案 0 :(得分:2)
尝试这种方式,但不是一个好方法。
Class<?> clazz = String.class;
Constructor<?> ctor = clazz.getConstructor(String.class);
Object object = ctor.newInstance(new Object[] { "abc" });
System.out.println(object); // print abc
答案 1 :(得分:2)
如果您知道该类具有无参数构造函数,则可以调用c.newInstance()
。否则,您需要调用接受参数的newInstance()
的重载版本。