栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

比较相同对象 指定属性值 是否相同

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

比较相同对象 指定属性值 是否相同

public class Demo2 {

    private Integer id;

    @MyAnnotation
    private String name;

    @MyAnnotation
    private Integer age;

    public String getName() {
        return name;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public static void main(String[] args) throws Exception {
        Demo2 demo = new Demo2();
        demo.setId(1);
        demo.setName("小明");
        demo.setAge(11);

        Demo2 demo2 = new Demo2();
        demo2.setId(1);
        demo2.setName("小明");
        demo2.setAge(13);

         if(compareField(demo, demo2)){
             System.out.println("属性值变化了。。。。。。");
         }


    }


    public static Boolean compareField(Object account, Object oldAccount) throws Exception {

        if(account ==null && oldAccount==null){
            return Boolean.FALSE;
        }
        if(account!=null || oldAccount==null){
            return Boolean.TRUE;
        }
        Class clazz = account.getClass();
        Class clazz2 = oldAccount.getClass();
        if(!clazz.equals(clazz2)){
            throw  new Exception("对象不是同一个,无法比对字段值");
        }

        Field[] fildArray = clazz.getDeclaredFields();
        for (Field field : fildArray) {
            if(field.isAnnotationPresent(MyAnnotation.class)){
                field.setAccessible(true);
                Object newField = field.get(account);
                Field declaredField = clazz2.getDeclaredField(field.getName());
                declaredField.setAccessible(true);
                Object oldField = declaredField.get(oldAccount);
                if(!(newField+"").equals(oldField+"")){
                    return Boolean.TRUE;
                }
            }
        }

        return Boolean.FALSE;


    }

}

@Target({ElementType.ANNOTATION_TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {


}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/603108.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号