有两个Person对象,我们需要判断两个对象的年龄、姓名、性别、出生日期是否发生了变化。如果有2个以上的更改项目,请使用等替换。例如:年龄、姓名、出生年月日发生变更,则显示“年龄、姓名等信息已变更”。最容易想到的方法就是比较每个字段是否更新,然后用计数计数器来判断是否达到了限制。如果字段比较多或者改变限制的个数,代码复杂度相当高。可以考虑使用反射遍历对象字段进行判断。整体代码如下:classPerson{Stringname;串性;字符串年龄;生日日期;publicPerson(Stringname,Stringsex,Stringage,DatebirthDay){this.name=name;this.sex=性别;这个。年龄=年龄;this.birthDay=生日;}}//可以指定哪些字段需要比较,如果不需要比较,就不要定义MapcompareColumns=newHashMap(){{put("姓名","姓名");放(“性别”,“性别”);把(“年龄”,“年龄”);put("生日","出生日期");}};/***字符串格式*/@Testpublicvoidtest5(){Personp1=newPerson("张三","1","13",newDate());Personp2=newPerson("李四","1","13",newDate());整数计数=0;StringBuildersb=newStringBuilder();for(FielddeclaredField:Person.class.getDeclaredFields()){try{if(compareColumns.containsKey(declaredField.getName())){declaredField.setAccessible(true);//转换为字符串并比较字符串内容Objectobj1=declaredField.get(p1);对象obj2=declaredField.get(p2);if(Objects.nonNull(obj1)&&!obj1.equals(obj2)){if(count==2){sb.append("信息已更新");休息;}if(count>0){sb.append(",");}sb.append(compareColumns.get(declaredField.getName()));计数++;}}}catch(IllegalAccessExceptione){//log.info("initCustomerDetailCount:{}",e);}}System.out.println("比较结果:"+sb.toString());}