美文网首页java编程积累
比较对象属性的变化

比较对象属性的变化

作者: 风一样的存在 | 来源:发表于2018-11-29 22:40 被阅读0次

思路:对象转化为map然后比较map之间的键值变化。

import java.util.Map;
import java.util.Objects;

public class CompareUtils {
    private static final ObjectMapper mapper = new ObjectMapper();

    public static String getModifyContent(Object source, Object target) {
        StringBuffer stringBuffer=new StringBuffer();
        if (null == source || null == target) {
            if (null == source && null == target) return null;
            else if (null == target) return null;
            else {
                return mapper.convertValue(target, new TypeReference<Object>() {
                });
            }
        }
        if (!Objects.equals(source.getClass().getName(), target.getClass().getName())) {
            throw new ClassCastException("source and target are not same class type");
        }
        Map<String, Object> sourceMap = mapper.convertValue(source, new TypeReference<Map<String, Object>>() {});
        Map<String, Object> targetMap = mapper.convertValue(target, new TypeReference<Map<String, Object>>() {});
        sourceMap.forEach((k, v) -> {
            Object targetValue = targetMap.get(k);
            if (!Objects.equals(v, targetValue)) {
                stringBuffer.append(k+"由原来的:"+v+",更新为:"+targetValue+";");
            }
        });
        return stringBuffer.toString();
    }
}

相关文章

  • 比较对象属性的变化

    思路:对象转化为map然后比较map之间的键值变化。

  • 如何用KVO观察对象的子对象的属性变化

    如何用KVO观察对象的子对象的属性变化?KVO观察多级对象属性变化

  • 2.4 KVO设计模式(监听对象属性的变化)

    KVO设计模式(监听对象属性的变化) BOSS类 KVO设计模式(监听对象属性的变化).png

  • 54-Vue路由-监听路由变化

    watch属性不仅能够监听vm数据变化,还可以监听任何对象的属性变化,比如监听路由地址的变化.这里路由对象,监听方...

  • js原型,原型链

    原型相关的属性也比较多,对象有”prototype”属性,函数对象有”prototype”属性,原型对象有”con...

  • 关于Vue中侦听器实现侦听对象的方法

    Vue中不能侦听到对象内部属性的变化,要侦听对象内部熟悉的变化,必须这么写:

  • iOS KVC和KVO

    kvc:使用字符串直接访问对象的属性,或者给对象属性赋值 kvo:键值观察机制,它提供了观察对象属性变化的方法 K...

  • 设计模式-状态模式

    原文地址:LoveDev 一个对象的行为其属性的动态变化,这样的属性叫状态,这类对象也叫做有状态的对象。当此类对象...

  • vue 监听对象属性的变化

    在修改(不是替换)对象或数组时,旧值将与新值相同,因为它们索引同一个对象/数组。Vue 不会保留修改之前值的副本。...

  • ES Object

    属性简单表达 属性名表达式 对象做属性名时 对象比较 Object.assign() Object.assign拷...

网友评论

    本文标题:比较对象属性的变化

    本文链接:https://www.haomeiwen.com/subject/bubqcqtx.html