java对象校验属性字段是否一致加粗样式
废话不多说直接上代码,本次使用反射的方式进行校验字段是否一致
对象
@Setter
@Getter
@Data
public class User {
public int id;
public String name;
public BigDecimal amount;
}
方法
public static boolean compareObject(User user1,User user2) throws Exception {
Class<? extends User> aClass1 = user1.getClass();
Class<? extends User> aClass2 = user2.getClass();
Field[] declaredFields1 = aClass1.getDeclaredFields();
Field[] declaredFields2 = aClass2.getDeclaredFields();
if (declaredFields1.length!=declaredFields2.length){
return false;
}
for (int i = 0; i <declaredFields1.length ; i++) {
declaredFields1[i].setAccessible(true);
declaredFields2[i].setAccessible(true);
Object o1 = declaredFields1[i].get(user1);
Object o2 = declaredFields2[i].get(user2);
if (o1==null && o2!=null){
return false;
}
if (!Objects.equals(o1,o2)){
return false;
}
}
return true;
}
执行结果
拓展:如果遇到对报文对象校验的话,可以先解析报文转成对象,再进行比较
//伪代码
String xml="";
JSONUtil.toBean( XML.toJSONObject(xml),AllotrulesPO.class);