我有一组类:TestClass1
, TestClass2
和TestClass3
。所有这些类都继承自MainTestClass
类。类TestClass1
、TestClass2
和TestClass3
有不同的构造函数。例如:
TestClass1(String s)
TestClass2(Integer i)
TestClass3(Double d)
类可以有多个构造函数——每个构造函数都不同。
现在我想随机创建这些类的实例并将它们存储在List中。为此,我存储TestClass1
的Class
对象,…使用TestClass1.class
,…在一个列表中。然后,我得到每个类的第一个构造函数,它有非零参数计数。现在,当我想使用newInstance()
方法创建对象时,我不知道传递给这个特定构造函数的参数的类型和计数。
有可能实现这样的东西使用反射吗?我一直在想这样的事情
setConstructorArgument(int number, Object value)
或
setConstructorArguments(Object[] arguments)
在Java中是否存在类似的方法?
构造函数对象有一个newInstance方法,该方法可以接受参数进行构造它所属的阶级。显然,实参必须与期望的形参匹配getParameterTypes方法可以提供这些。
对象……initargs实际上意味着Object[] initargs,除了它允许语法
newInstance(param1, param2, param3);
和
newInstance(new Object[]{param1, param2, param3});
你还应该记住
newInstance(null);
不代表
newInstance(new Object[]{null});
不时地抓住人们。
我个人不喜欢变量,但这就是生活。