java反射机制应用简单实例

*
* @param obj
* 当前操作对象的信息
*
* @return void
*/
public <T> void getObjectInfo(T obj)
{
//根据具体情况,决定是本类还是超类。

Class ca = obj.getClass().getSuperclass();
Object supObj = ca.cast(obj);
Field[] fields = ca.getDeclaredFields();
StringBuilder reStr = new StringBuilder("[");
for (Field f : fields) {
try {
f.setAccessible(true);
Object fvalue = f.get(supObj);
if (null == fvalue) {
reStr.append("," + f.getName() + ":" + fvalue);
}

if (fvalue instanceof java.util.Collection
|| fvalue instanceof java.util.List
|| fvalue instanceof java.util.Map
|| fvalue instanceof java.util.Set) {
continue;
}
if (!f.isSynthetic()) {
//这里结合了具体业务。因为我们项目中pojo都继承了这个对象
if (fvalue instanceof com.common.dto.BaseDto) {
//根据具体情况,决定是本类还是超类。 Class fc = fvalue.getClass().getSuperclass();
Field[] ffs = fc.getDeclaredFields();
for (Field hf : ffs) {
hf.setAccessible(true);
if (hf.getName().equalsIgnoreCase("id")) {
reStr.append(","
+ fvalue.getClass().getSimpleName()
+ hf.getName() + ":" + hf.get(fvalue));
break;
} else if (hf.getName().endsWith("Id")) {
String allname = "T"
+ hf.getName().substring(0,
hf.getName().length() - 2)
+ "DTO";
if (fc.getSimpleName()
.equalsIgnoreCase(allname)
|| fc.getSimpleName().equalsIgnoreCase(
"Abstract" + allname)) {
reStr.append("," + hf.getName() + ":"
+ hf.get(fvalue));
break;
}

}
}
} else {
reStr.append("," + f.getName() + ":" + fvalue);
}
}
} catch (IllegalArgumentException e) {
// e.printStackTrace();
} catch (IllegalAccessException e) {
// e.printStackTrace();
}

}
reStr.append("]");
log.info("对象信息:" + reStr.toString());
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值