簡體   English   中英

使用反射在構造函數中創建帶參數的對象

[英]Using reflection to create object with parameters in 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虛擬參數。 這可以為您提供一個對象,但這並不意味着它將是一個有用的對象。 ;)

我不確定為什么它會跳過零長度構造函數,因為這是您可能無法成功傳遞任何參數的一個構造函數。

元素數等於構造函數中參數數的對象數組,因此:

new Object[constructor.getParameterTypes().length])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM