Follow Up: Создать массив объектов из classname - PullRequest
0 голосов
/ 27 октября 2009

Я занимаюсь этим вопросом, 1268817

В этом вопросе мы находим способ создания объекта, которому присвоено имя (в виде строки) класса.

Но как насчет создания массива этих объектов ... как бы его инициализировать.

Я думал, что-то в строке, но, кажется, не работает

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

Ответы [ 4 ]

2 голосов
/ 27 октября 2009

Использование Массив :

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

и ловите соответствующие исключения.

2 голосов
/ 27 октября 2009
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 голос
/ 27 октября 2009

Вот пример создания массива String:

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

Class cls = Class.forName("java.lang.String");
String[] strArray = (String[]) Array.newInstance(cls, 10);
0 голосов
/ 27 октября 2009

Попробуйте:

Class<?> c = Class.forName(className);
Object xyz = Array.newInstance(c, length);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...