0

我有一组类TestClass1TestClass2TestClass3。所有这些类都继承自 class MainTestClass。类TestClass1TestClass2TestClass3具有不同的构造函数。例如:

TestClass1(String s)
TestClass2(Integer i)
TestClass3(Double d)

类可以有多个构造函数——每个构造函数都与其他构造函数不同。

现在我想随机创建这些类的实例并将它们存储在 List 中。为此,我将, ...的Class对象存储在 List 中。然后,我得到例如每个类的第一个构造函数,它具有非零参数计数。现在,当我想使用方法创建对象时,我不知道要传递给这个特定构造函数的参数类型和数量。TestClass1TestClass1.classnewInstance()

是否可以使用反射来实现这样的目标?我一直在考虑类似的事情

setConstructorArgument(int number, Object value)

或者

setConstructorArguments(Object[] arguments)

Java中是否存在类似的方法?

4

1 回答 1

3

构造函数对象有一个 newInstance 方法,该方法可以接受参数来构造它所属的类。显然,参数必须与 getParameterTypes 方法可以提供的参数相匹配。

Object... initargs 实际上意味着 Object[] initargs,除了它允许语法

newInstance(param1, param2, param3);

newInstance(new Object[]{param1, param2, param3});

你还应该记住

newInstance(null);

并不意味着

newInstance(new Object[]{null});

时不时会抓到人。

我个人不喜欢可变参数,但 c'est la vie。

于 2013-03-25T01:03:33.760 回答