反射操作數組---反序列化小知識
阿新 • • 發佈:2018-08-06
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 ); }
反射操作數組---反序列化小知識