任意类的新实例

时间:2014-05-08 16:40:55

标签: java class constructor

在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"

2 个答案:

答案 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()的重载版本。

相关问题