我无法理解以下代码:
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
独立于实际的形式参数?
答案 0 :(得分:1)
它尝试传递全部为null
的虚拟参数。这可以给你一个对象,但这并不意味着它将是一个有用的。 ;)
我不确定为什么它会跳过零长度构造函数,因为这是一个你可能无法成功传递参数的构造函数。
答案 1 :(得分:1)
一个对象数组,其元素数等于构造函数中的参数数量,因此:
new Object[constructor.getParameterTypes().length])