Java中2个对象字段值比较是否相同

1、工具类

package com.shucha.deveiface.biz.utils;
 
/**
 * @author tqf
 * @Description
 * @Version 1.0
 * @since 2022-03-21 16:50
 */
 
import com.shucha.deveiface.biz.model.Comparison;
 
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
 
public class CompareObjUtil {
 
    public static List compareObj(Object beforeObj, Object afterObj) throws Exception{
        List diffs = new ArrayList<>();
 
        if(beforeObj == null) {
            throw new RuntimeException("原对象不能为空");
        }
        if(afterObj == null) {
            throw new RuntimeException("新对象不能为空");
        }
        if(!beforeObj.getClass().isAssignableFrom(afterObj.getClass())){
            throw new RuntimeException("两个对象不相同,无法比较");
        }
 
        //取出属性
        Field[] beforeFields = beforeObj.getClass().getDeclaredFields();
        Field[] afterFields = afterObj.getClass().getDeclaredFields();
        Field.setAccessible(beforeFields, true);
        Field.setAccessible(afterFields, true);
 
        //遍历取出差异值
        if(beforeFields != null && beforeFields.length > 0){
            for(int i=0; i list = CompareObjUtil.compareObj(apIData, apIData1);
        System.out.println(list);
    }
package com.shucha.deveiface.biz.model;
 
import lombok.Data;
import lombok.experimental.Accessors;
 
/**
 * @author tqf
 * @Description  接口请求参数类
 * @Version 1.0
 * @since 2020-08-03 20:06
 */
@Data
@Accessors(chain = true) //注解用来配置lombok如何产生和显示getters和setters的方法
public class ApIData {
 
    /**
     * 身份证号
     */
    private String ident_card;
 
    /**
     * 姓名
     */
    private String name;
 
    /**
     * 户号  水务局使用查询
     */
    private String hh;
 
    /**
     * 用水月份  YYYY-MM
     */
    private String month;
 
    /**
     * 房东用户ID
     */
    private String owner_id;
 
    /**
     * 所属街道
     */
    private String street_name;

}

到此这篇关于Java中2个对象字段值比较是否相同的文章就介绍到这了,更多相关Java 对象字段值比较内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(Java中2个对象字段值比较是否相同)