gpt4 book ai didi

java - 用于在两个 bean 中生成字段差异的通用算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:12:39 27 4
gpt4 key购买 nike

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

对于这样的任务,是否有一种常用的算法或设计模式,也许可以抽象出来并重新用于不同类型的 bean? (我很难为这类问题想出一个好名字来知道要用谷歌搜索什么)。我已经检查了 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++;
}

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

关于java - 用于在两个 bean 中生成字段差异的通用算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/578209/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com