java - 如何比较两个对象并获取更改的字段

标签 java object-comparison

在这里,我记录对特定对象记录所做的更改。因此,我比较旧记录和更新记录,以将更新字段记录为字符串。知道我该怎么做吗?

最佳答案

我找到了如下解决方案:

  private static List<String> getDifference(Object s1, Object s2) throws IllegalAccessException {
    List<String> values = new ArrayList<>();
    for (Field field : s1.getClass().getDeclaredFields()) {
        field.setAccessible(true);
        Object value1 = field.get(s1);
        Object value2 = field.get(s2);
        if (value1 != null && value2 != null) {
            if (!Objects.equals(value1, value2)) {
                values.add(String.valueOf(field.getName()+": "+value1+" -> "+value2));
            }
        }
    }
    return values;
}

关于java - 如何比较两个对象并获取更改的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55294391/

相关文章:

java - 在 itemStateChanged 上获取 TableCellRenderer 的行

java - 使用 EJB 定时器服务执行外部服务

java - jfreechart 包含事件的时间序列图

javascript - 使用 JSON.stringify 进行深度比较和克隆是否合适?

Python pickle : pickled objects are not equal to source objects

objective-c - 为什么我的比较 if 语句不起作用?

java - 使用 jna 获取 IShellFolder

java - 替换数据删除旧数据

java - 我应该重写 Object.equals(Object) 方法吗?

Java - 检查部分对象相等性