java – 用于生成两个bean中的字段的diff的通用算法?
发布时间:2020-12-14 05:36:47 所属栏目:Java 来源:网络整理
导读:假设您有两个相同bean类型的实例,并且您想显示两个实例之间发生变化的摘要 – 例如,您有一个表示用户在应用程序中的设置的bean,并且您希望以便能够显示用户正在提交的新设置(实例#1)与用户已存在的内容(实例#2)的更改列表. 有没有一个常用的算法或设计模式,
假设您有两个相同bean类型的实例,并且您想显示两个实例之间发生变化的摘要 – 例如,您有一个表示用户在应用程序中的设置的bean,并且您希望以便能够显示用户正在提交的新设置(实例#1)与用户已存在的内容(实例#2)的更改列表.
有没有一个常用的算法或设计模式,这样的任务,也许是可以抽象和重新使用不同类型的bean? (我很难想到这种类型的问题的好名称,以了解Google的内容).我检查了commons-beanutils,没有弹出我的. 解决方法
如果你正在谈论比较价值观,我会考虑使用反射,并只是按字段逐一比较.
这样的东西 Field[] oldFields = oldInstance.class.getDeclaredFields(); Field[] newFields = newInstance.class.getDeclaredFields(); StringBuilder changes = new StringBuilder(); Arrays.sort(oldFields); Arrays.sort(newFields); int i = 0; for(Field f : oldFields) { if(!f.equals(newFields[i])) { changes.append(f.getName()).append(" has changed.n"); } i++; } 此代码尚未测试.您可能需要在字段中获取值并将其进行比较,而不是仅将字段相互比较,但它应该在理论上起作用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |