1

我无法理解以下代码:

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独立于实际的形式参数?

4

2 回答 2

1

它试图传递所有的虚拟参数null。这可以给你一个对象,但这并不意味着它将是一个有用的对象。;)

我不确定为什么它会跳过零长度构造函数,因为这是你可能无法成功传递参数的一个构造函数。

于 2012-09-12T07:50:29.293 回答
1

一个对象数组,其元素数量等于构造函数中的参数数量,因此:

new Object[constructor.getParameterTypes().length])
于 2012-09-12T07:51:47.247 回答