java 利用反射获取类对象中List的值


Field[] fields = Object.getClass().getDeclaredFields();//Object是已经被赋值的对象实例 for (Field field : fields) {if (!field.isAccessible()) { field.setAccessible(true); } if (List.class.isAssignableFrom(field.getType())) { Type t = field.getGenericType(); if (t instanceof ParameterizedType) { ParameterizedType pt = (ParameterizedType) t; Class clz = (Class) pt.getActualTypeArguments()[0];//得到对象list中实例的类型 Class clazz = field.get(db).getClass();//获取到属性的值的Class对象 Method m= clazz.getDeclaredMethod("size"); int size = (Integer) m.invoke(field.get(db));//调用list的size方法,得到list的长度 for (int i = 0; i < size; i++) {//遍历list,调用get方法,获取list中的对象实例 Method getM= clazz.getDeclaredMethod("get", int.class); if(!getM.isAccessible()){ getM.setAccessible(true); } mHelper.getDao(clz).createOrUpdate(getM.invoke(field.get(db), i));//加入到Ormlite数据库中 } } }

 

posted @ 2015-04-25 11:42  sleepend  阅读(13842)  评论(1编辑  收藏  举报