我有一组课程:TestClass1
,TestClass2
和TestClass3
。所有这些类都继承自类MainTestClass
。类TestClass1
,TestClass2
和TestClass3
具有不同的构造函数。例如:
TestClass1(String s)
TestClass2(Integer i)
TestClass3(Double d)
类可以有多个构造函数 - 每个构造函数都与其他构造函数不同。
现在我想随机创建这些类的实例并将它们存储在List中。为此,我将Class
的{{1}}个对象存储在一个列表中,使用TestClass1
,...。然后,我得到每个类的第一个构造函数,它具有非零参数计数。现在,当我想使用TestClass1.class
方法创建对象时,我不知道传递给这个特定构造函数的参数的类型和数量。
使用反射可以实现这样的效果吗?我一直在考虑像
这样的东西newInstance()
或
setConstructorArgument(int number, Object value)
Java中是否存在类似的方法?
答案 0 :(得分:2)
构造函数对象有一个newInstance方法,可以接受构造的参数 它所属的类。显然,参数必须与预期的参数相匹配 getParameterTypes方法可以提供这些。
对象... initargs实际上意味着Object [] initargs,除了它允许语法
newInstance(param1, param2, param3);
以及
newInstance(new Object[]{param1, param2, param3});
你还应该记住
newInstance(null);
并不意味着
newInstance(new Object[]{null});
不时捕捉到人们。
我个人不喜欢varargs,但是喜欢la vie。