java编程积累

比较对象属性的变化

2018-11-29  本文已影响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();
    }
}
上一篇下一篇

猜你喜欢

热点阅读