2013-06-20 34 views
4

有人請幫忙瞭解我們如何使用反射來初始化java中的數組。使用反射進行數組初始化

一個簡單的對象,我們可以這樣做:

Class l_dto_class = Class.forName(p_fld.getType().getName()); 
Object l_dto_obj= l_dto_class.newInstance(); 

但陣列它給我的異常的情況。

java.lang.InstantiationException 
+1

你能提供導致異常的代碼? – johnchen902

+0

爲了調用'newInstance()',你必須有一個零參數構造函數,我不認爲'數組'符合這個要求...... – cmbaxter

回答

7

可以實例數組是這樣的:

if (l_dto_class.isArray()) { 
     Object aObject = Array.newInstance(l_dto_class, 5); //5 is length 
     int length = Array.getLength(aObject); // will be 5 
     for (int i=0; i<length; i++) 
      Array.set(aObject, i, "someVal"); // set your val here 
    } 
} 
+0

要創建l_dto_class項目的數組,您需要獲取組件類並將其傳遞給newInstance方法: 'Array.newInstance(l_dto_class.getComponentClass(),5)' –

7

有反射數組類java.lang.reflect.Array

int[] test = (int[])Array.newInstance(int.class, 3); 
+0

請注意,你需要將'test [3]'改爲'test [] '。 – johnchen902

+0

@ johnchen902正確完成 – JEY