HeavenTang

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

统计

java 反射获取某个类的属性名和属性的值

/**
* 根据字段饰扣可以为空获取每个属性的变更内容 如 课程名称:英语-->数学;
* @param vo
* @param fieldName 字段名:传值类型为CourseName 周首字母大写
* @param describe 字段的描述:可以理解为就是字段的名称 如 课程名称
* @param sb StringBuffer对象
* @return
* @throws Exception
*/
private StringBuffer getEditContentWhetherNull(CourseDtFieldsDto vo,String fieldName,String describe,StringBuffer sb) throws Exception {
Class aClass = vo.getClass();
String getFieldNameBefore = "get"+fieldName+"Before"; //获取修改前的值的get方法名
String getFieldNameAfter = "get"+fieldName+"After"; //获取修改后的值的get方法名
Method getBefore = aClass.getDeclaredMethod(getFieldNameBefore); //获取修改前的值的get方法
Method getAfter = aClass.getDeclaredMethod(getFieldNameAfter); //获取修改后的值的get方法
String type= getBefore.getGenericReturnType().toString();
type = type.substring(type.lastIndexOf(".")+1); //获取属性的类型
if("String".equals(type)){
String before = (String) getBefore.invoke(vo); //获取修改前的值
String after = (String) getAfter.invoke(vo); //获取修改后的值
if((before != null && !"".equals(before)) && (after == null || "".equals(after))){ //修改前的值不为空 修改后的值为空
sb.append(describe+":"+before+" --> "+"空; ");
}
if((before != null && !"".equals(before)) && (after != null && !"".equals(after)) && (!before.equals(after))){ //修改前的值不为空 修改后的值不为空 且修改前和修改后不相等
sb.append(describe+":"+before+" --> "+after+"; ");
}
if((before == null || "".equals(before)) && (after != null && !"".equals(after))){ //修改前的值为空 修改后的值不为空
sb.append(describe+":空"+" --> "+after+"; ");
}
}else{
Object before = getBefore.invoke(vo); //获取修改前的值
Object after = getAfter.invoke(vo); //获取修改后的值
if((before != null) && (after == null)){ //修改前的值不为空 修改后的值为空
sb.append(describe+":"+before+" --> "+"空; ");
}
if((before != null) && (after != null) && (!before.equals(after))){ //修改前的值不为空 修改后的值不为空 且修改前和修改后不相等
sb.append(describe+":"+before+" --> "+after+"; ");
}
if((before == null) && (after != null)){ //修改前的值为空 修改后的值不为空
sb.append(describe+":空"+" --> "+after+"; ");
}
}
return sb;
}

posted on   HeavenTang  阅读(178)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示