跟进:从类名创建一个对象数组

时间:2009-10-27 16:40:38

标签: java reflection constructor

我正在跟进这个问题,1268817

在这个问题中,我们找到了一种方法,在给定类的名称(作为字符串)的情况下创建对象的isntance。

但是如何创建这些对象的数组......如何初始化它。

我正在思考一些但似乎无法正常工作的事情

Object[] xyz = Class.forName(className).newInstance()[];

4 个答案:

答案 0 :(得分:2)

Object objects = java.lang.reflect.Array.newInstance(Class.forName(classname), 10);

对于10个元素的数组。

令人讨厌的是它返回一个对象,而不是一个对象数组。

汤姆指出,这是允许:

Object objects = java.lang.reflect.Array.newInstance(int.class, 10);

int []不能赋值给Object [],因此返回类型必须是Object。但它仍然很烦人,因为你很少想这样做。

答案 1 :(得分:2)

使用Array

Object[] xyz = Array.newInstance(Class.forName(className), 123);

并抓住相应的例外情况。

答案 2 :(得分:1)

以下是创建String数组的示例:

// equiv to String strArray = new String()[10]

Class cls = Class.forName("java.lang.String");
String[] strArray = (String[]) Array.newInstance(cls, 10);

答案 3 :(得分:0)

尝试:

Class<?> c = Class.forName(className);
Object xyz = Array.newInstance(c, length);