码迷,mamicode.com
首页 > 编程语言 > 详细

反射操作数组---反序列化小知识

时间:2018-08-06 18:28:48      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:red   component   对象   object   type   array   span   小知识   写入   

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 );
}

 

反射操作数组---反序列化小知识

标签:red   component   对象   object   type   array   span   小知识   写入   

原文地址:https://www.cnblogs.com/ggwow/p/9431750.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!