我无法理解以下代码:
Constructor<T>[] constructors = (Constructor<T>[]) clazz.getConstructors();
for(int i = 0; i < constructors.length; i++){
Constructor<T> constructor = constructors[i];
if (constructor.getParameterTypes().length>0){
T instanceObject = constructor.newInstance(new Object[constructor.getParameterTypes().length]);
break;
}
}
为了清楚起见,省略了 try/catch
和其他内容。
我无法理解这是如何工作的:T instanceObject = constructor.newInstance(new Object[constructor.getParameterTypes().length]);
它调用具有参数的构造函数,但作为参数传递 Object
?
这是如何运作的?独立于实际的形式参数传递Object
?
最佳答案
它尝试传递全部为null
的虚拟参数。这可以给你一个对象,但这并不意味着它将是一个有用的对象。 ;)
我不确定为什么它会跳过零长度构造函数,因为这是您可能无法成功传递任何参数的一个构造函数。
关于java - 使用反射创建带有构造函数参数的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12383433/