[英]Using reflection to use a specific class constructor and create a new object
[英]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.