当前位置:  开发笔记 > 编程语言 > 正文

在两个bean中生成字段差异的常用算法?

如何解决《在两个bean中生成字段差异的常用算法?》经验,为你挑选了1个好方法。

假设您有两个相同bean类型的实例,并且您希望显示两个实例之间已更改内容的摘要 - 例如,您在应用程序中有一个表示用户设置的bean,并且您希望能够显示用户正在提交的新设置(实例#1)中已更改内容的列表与已为用户存储的内容(实例#2)的列表.

对于诸如此类的任务,是否存在常用的算法或设计模式,可能是可以抽象并重用于不同类型的bean的东西?(我很难想到这类问题的好名字,知道谷歌会怎么做).我检查过commons-beanutils,没有任何东西弹出我.



1> kgrad..:

如果你在谈论比较值,我会考虑使用反射并逐个比较它们.

像这样的东西:

    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++;
    }

此代码尚未经过测试.您可能需要获取字段中的值并进行比较,而不是仅仅将字段相互比较,但它应该在理论上起作用.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有