1. 程式人生 > >反射操作數組---反序列化小知識

反射操作數組---反序列化小知識

tde dcl 寫入 小知識 code bject 數組類 操作數 反序列化

Object[] 為 數據源

model 中有一個屬性為xxx[] 未知,在java中,object[] 無法強制轉化成xxx[],如果上文中的f.set(obj,fieldObj );方法反射寫入值,會報錯。

具體方法:

//obj為對象
//classKey 為數組的那個成員變量名稱
java.lang.reflect.Field f = obj.getClass().getDeclaredField(classKey);

//獲得數組類型
Class fieldClazz = f.getType();

if (fieldClazz.isArray()) {
    Object[] arrayObjs 
= (Object[]) value;//反序列化生產的object[] //fieldClazz.getComponentType();獲得數組的成員類型 //Array.newInstance(clazz,length) 相當於 Clazz[] array = new Clazz[length]; 但是clazz 未知時候,無法用後者 Object fieldObj = Array.newInstance(fieldClazz.getComponentType(), arrayObjs.length); for(int j = 0 ; j < arrayObjs.length; j++) {
//寫入值的方法 Array.set(fieldObj, j, arrayObjs[j]); } f.set(obj,fieldObj ); }

反射操作數組---反序列化小知識