2015-01-09 4 views
0

Возможно ли в Java взять набор классов с параметризованными конструкторами и создать экземпляр каждого из них во время выполнения? Эти классы имеют только один конструктор, который может принимать любое количество аргументов примитивного типа, хотя количество аргументов, которые они принимают, может варьироваться для каждого класса. В качестве примера, вот четыре класса, которые мы хотим создать экземпляр во время выполнения:Создание экземпляра заданного набора классов с параметризованными конструкторами

public class One { public One(int a) { } } 
public class Two { public Two(char a, int b) { } } 
public class Three { public Three(float a, char b, int c) { } } 
public class Four { public Four(float a, char b, int c) { } } 
+0

с отражением, вы можете найти конструктор (как есть только один), но где бы находились значения 'a',' b', 'c' и т. д. fr ом? –

+0

@RC Я не уверен. кажется, что даже когда мы используем Constructor.newInstance(), нам все равно нужно знать количество и порядок аргументов во время компиляции. – user928112

ответ

2
Class oneC = Class.forName("One"); // use FQCN 
Contructor constructor = oncC.getConstructors()[0]; // assuming that the class has only 1 constructor 
Class<?>[] paramTypes = constructor.getParameterTypes(); 
// Iterate paramTypes, create each parameter value and then call constructor.newInstance(...) 

Ссылка:

Смежные вопросы