欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何判断同一类型的两个对象的属性值是否相等

程序员文章站 2022-04-09 20:01:42
...

有时候我们需要对两个对象的属性值进行一些比较操作,例如在做一些保存操作时判断是否有属性被修改等。
那么你可以将以下代码进行一些修改作为一个工具类来使用。
其中Pojo为你自己定义的对象类型,根据需求进行修改即可。

public static boolean contrastObj(Object obj1, Object obj2) {
    boolean isEquals = true;
    if (obj1 instanceof Pojo && obj2 instanceof Pojo ) {
        Pojo pojo1 = (Pojo) obj1;
        Pojo pojo2 = (Pojo) obj2;
        List textList = new ArrayList<String>();
        try {
            Class clazz = pojo1.getClass();
            Field[] fields = pojo1.getClass().getDeclaredFields();
            for (Field field : fields) {
                PropertyDescriptor pd = new PropertyDescriptor(field.getName(), clazz);
                Method getMethod = pd.getReadMethod();
                Object o1 = getMethod.invoke(pojo1);
                Object o2 = getMethod.invoke(pojo2);
                if (!o1.toString().equals(o2.toString())) {
                    isEquals = false;
                    textList.add(getMethod.getName() + ":" + "false");
                } else {
                    textList.add(getMethod.getName() + ":" + "true");
                }
            }
        } catch (Exception e) {

        }
        for (Object object : textList) {
            System.out.println(object);
        }
    }
    return isEquals;
}