java - 使用反射创建带有构造函数参数的对象

标签 java reflection constructor

我无法理解以下代码:

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/

相关文章:

java - 如何在java中使用不同的泛型构造构造函数

java - 您可以在创建构造函数时调用对象上的方法吗?

c# - Type.GetMethod() 返回 null,即使方法确实存在

reflection - 如何获取某个类型的所有非静态成员?

c++ - 调用默认构造函数的两种方式

java - 获取ArrayList中重复项的数量

java - Android - 2 小时后获取时间

java - 在主要 Activity 显示主要内容 View 之前添加 fragment

java - 基于鼠标移动旋转四元数(OpenGL 和 Java)

c# - 检查两个未知类型的对象是否相等,比较它们的所有字段