Rtu obj=new Rtu();
List cargos = obj.getCargos();
cargos.add(new Cargo());
cargos.add(new Cargo());
cargos.add(new Cargo());
obj.setCargos(cargos);
Field[] fields = obj.getClass().getDeclaredFields();//Object是已经被赋值的对象实例
for (Field field : fields) {
if (!field.isAccessible()) {
field.setAccessible(true);
}
if (List.class.isAssignableFrom(field.getType())) {
Method m = List.class.getDeclaredMethod("size");
int size = (Integer) m.invoke(field.get(obj));//调用list的size方法,得到list的长度
System.out.println(size);
Type t = field.getGenericType();
if (tinstanceof ParameterizedType) {
ParameterizedType pt = (ParameterizedType) t;
Class clz = (Class) pt.getActualTypeArguments()[0];//得到对象list中实例的类型
System.out.println(clz.getName());//获得List的泛型类型
//获取集合的第一个对象
for (int i =0; i < size; i++) {//遍历list,调用get方法,获取list中的对象实例
Method getM= List.class.getDeclaredMethod("get", int.class);
if(!getM.isAccessible()){
getM.setAccessible(true);
}
Object list_i_Obj = getM.invoke(field.get(obj), i);
// System.out.println(list_i_Obj);//集合中的每个元素对象
//获取每个对象的cargoNumber属性值
Field cnField = clz.getDeclaredField("cargoNumber");
cnField.setAccessible(true);
Object o = cnField.get(list_i_Obj);//每个元素对象中的cargoNumber值
System.out.println(o.toString());
}
}
}
}