/**
* 比较同一个类的两个对象示例的不一样的内容,并输出不一样的字段内容
* <br/> 属性字段为基本数据类型
*
* @author FALSE KING create
* @date 2016年9月23日 下午4:36:38
*/
public class ModelComparator<T> {
/**
* 比较内容,输出不一样的字段内容<br/>
* 属性字段为基本数据类型
*
* @param oldModel 修改前的对象
* @param newModel 修改后的对象
* @param exceptFileds 排除的属性字段列表
* @return
*/
public String compare(T oldModel,T newModel,List<String> exceptFileds) {
List<String> result = new ArrayList();
Field[] oldFields = oldModel.getClass().getDeclaredFields();
for (Field f : oldFields) {
String name = f.getName();
if(CollectionUtils.isNotEmpty(exceptFileds) && exceptFileds.contains(name)){
continue;
}
String methodName = "get" + name.substring(0, 1).toUpperCase() +
name.substring(1);
try {
Object oldVal = oldModel.getClass().getMethod(methodName).invoke(oldModel);
Object newVal = newModel.getClass().getMethod(methodName).invoke(newModel);
if(oldVal != null && !oldVal.equals(newVal)){
result.add(String.valueOf(oldVal) + "修改为" +String.valueOf(newVal)+ "\n") ;
}
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException
| NoSuchMethodException | SecurityException e) {
}
}
String str = "";
if(CollectionUtils.isNotEmpty(result)){
str = result.stream().reduce((sum,e)->sum += e).get();
}
return str;
}
}
相关推荐
1、假设你要反射一个 DLL 中的类,并且没有引用它(即未知的类型): Assembly assembly = Assembly.LoadFile(程序集路径,不能是相对路径); // 加载程序集(EXE 或 DLL) dynamic obj = assembly....
C#,利用反射动态创建对象 C#,利用反射动态创建对象 C#,利用反射动态创建对象 C#,利用反射动态创建对象
此代码是一个生成泛型对象的类。 比如: Pool<Point> pool = new Pool(){}; Point p = pool.get(x, y); //在此构造Point对象 ... pool.put(p); 希望能帮助那些为查找泛型构造器、非静态内部泛型类的对象生成而烦恼的...
java由类的完整路径利用反射给接口注入对象,本人亲测可用,完整实例。
主要介绍了C#使用Equals()方法比较两个对象是否相等的方法,涉及C#操作对象的相关技巧,需要的朋友可以参考下
利用反射技术,根据类的完全限定名获得该类的实例对象。包括无参数或带参数的实例化。感兴趣的可以看看!
主要介绍了java 判断两个对象是否为同一个对象实例代码的相关资料,需要的朋友可以参考下
“System.NullReferenceException: 未将对象引用设置到对象的实例”问题可能原因如下: 1、ViewState 对象为Null。 2、DateSet 空。 3、sql语句或Datebase的原因导致DataReader空。 4、声明字符串变量时未赋空值就...
java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名。本项目为普通java项目
1.通过Java反射机制获取JavaBean对象。 2.通过JavaBean全路径字符串获取JavaBean对象。 3.获取JavaBean注解信息
对应某个类的实例化的对象tc, 遍历获取所有属性(子成员)的方法(采用反射): 代码如下: Type t = tc.GetType();//获得该类的Type //再用Type.GetProperties获得PropertyInfo[],然后就可以用foreach 遍历了 foreach ...
C#反射实例C#反射实例讲解讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解
通过反射获得实体类的字段和值
1、ViewState 对象为Null。 2、DateSet 空。 3、sql语句或Datebase的原因导致DataReader空。 4、声明字符串变量时未赋空值就应用变量。 5、未用new初始化对象。 6、Session对象为空。 7、对控件赋文本值时,值不存在...
主要介绍了JS 比较两个Json对象的值是否相等的实例,有需要的朋友可以参考一下
学习反射的一个好实例,我在做项目的时候用到了。。。。。
引用一个对象实例和该对象的实例方法。在 C 或 C 中与委托最接近的是函数指针,但函数指针只能引用静态函数,而委托可以同时引用静态方法和实例方法。在后一种情况中,委托不仅存储对方法入口点的引用,还存储对调用...
Java 8个反射实例 项目实例 项目工程