递归反射获取子类及祖先的属性及方法

递归反射获取子类及祖先的属性及方法

public static List<String> getClassFieldAndMethod(Class<?> cur_class, Object object, List<String> dataT) {
	    Method metd = null;
		String fdname = null;
		List<String> data = dataT;
	    //属性
	    Field[] obj_fields = cur_class.getDeclaredFields();
	    for (Field field : obj_fields) {
	        field.setAccessible(true);
	        fdname = field.getName(); //得到字段名
	        //排除不需要的字段	
			if (!fdname.equals(POJO_SERIALVERSIONUID) && !fdname.equals(POJO_ID) && !fdname.equals(POJO_SENSORID)
					&& !fdname.equals(POJO_SUBDATACLASSNAME) && !fdname.equals(POJO_RESTYPE) && !fdname.equals(POJO_SATENUM)
					&& !fdname.equals(POJO_RESULTSTATE) && !fdname.equals(POJO_RATIO)) {
				try {
					metd = cur_class.getMethod(METHOD_GET + change(fdname), null);// 根据字段名找到对应的get方法,null表示无参数
					String value = metd.invoke(object, null)+"".trim();
					if(value == null || value.equals("")) {
						value = DEFAULT_VALUE;
					}
					data.add(value);
	        	} catch (NoSuchMethodException e) {
					e.printStackTrace();
				} catch (SecurityException e) {
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					e.printStackTrace();
				} catch (IllegalArgumentException e) {
					e.printStackTrace();
				} catch (InvocationTargetException e) {
					e.printStackTrace();
				}
	        }
	    }
	    //方法
//	    Method[] methods = cur_class.getDeclaredMethods();
//	    for (Method method : methods) {
//	        method.setAccessible(true);
//	        System.out.println(class_name + ":" + method.getName());
//	    }
	    //递归调用父类属性
	    if (cur_class.getSuperclass() != null) {
	        getClassFieldAndMethod(cur_class.getSuperclass(), object, dataT);
	    }
	    return data;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值