展开全部

这种情况你可以使用反射去写一个通用的方法,不过前提是你的32313133353236313431303231363533e4b893e5b19e31333363393664那些实体类都是简单的包装类,稍后奉上代码。代码如下:package pojo;

/**

* Created by liaokai on 2017/11/17 0017.

*/

public class Person {

private String name;

private int age;

public Person(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public boolean equals(Object o) {

if (this == o) return true;

if (o == null || getClass() != o.getClass()) return false;

Person person = (Person) o;

if (age != person.age) return false;

return name != null ? name.equals(person.name) : person.name == null;

}

@Override

public int hashCode() {

int result = name != null ? name.hashCode() : 0;

result = 31 * result + age;

return result;

}

@Override

public String toString() {

return "Person{" +

"name='" + name + '\'' +

", age=" + age +

'}';

}

}

package util;

import pojo.Person;

import java.lang.reflect.Field;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

/**

* Created by liaokai on 2017/11/17 0017.

*/

public class CompareUtil {

public List compareT(T t1,T t2,String className){

List list = new ArrayList();

//内容没改变直接返回

if(t1.equals(t2)){

return list;

}

try {

Class c = Class.forName(className);

//读取t1和t2中的所有属性

Field[] fields = c.getDeclaredFields();

for (int i = 0; i

Field field =fields[i];

field.setAccessible(true);

Object value1=field.get(t1);

Object value2=field.get(t2);

//判断这两个值是否相等

if(!isValueEquals(value1,value2)){

Map map = new HashMap();

map.put("name",field.getName());

map.put("before",value1);

map.put("after",value2);

list.add(map);

}

}

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

return list;

}

private boolean isValueEquals(Object value1, Object value2) {

if(value1==null&&value2==null){

return true;

}

if(value1==null&&value2!=null){

return false;

}

if(value1.equals(value2)){

return true;

}

return false;

}

}

package pojo;

import util.CompareUtil;

/**

* Created by liaokai on 2017/11/17 0017.

*/

public class Test {

public static void main(String[] args) {

Person p1 = new Person("张三",14);

Person p2 = new Person("张三",15);

Person p3 = new Person("李四",15);

CompareUtil compareUtil = new CompareUtil();

System.out.println(compareUtil.compareT(p1,p1,Person.class.getName()));

System.out.println(compareUtil.compareT(p1,p2,Person.class.getName()));

System.out.println(compareUtil.compareT(p1,p3,Person.class.getName()));

System.out.println(compareUtil.compareT(p2,p3,Person.class.getName()));

}

}

//运行结果

[]

[{before=14, name=age, after=15}]

[{before=张三, name=name, after=李四}, {before=14, name=age, after=15}]

[{before=张三, name=name, after=李四}]

java 实体比较_java比较实体类相关推荐

  1. java 匿名类型_Java之匿名类讲解

    匿名类,正如名字一样在java中没有名字标识的类,当然了编译后还是会安排一个名字的. 下面是一个关于匿名类的简单例子: public classClient {public static voidma ...

  2. java载入器材_JAVA之了解类载入器Classloader

    1.类的载入.连接和初始化 类初始化通常包含载入.连接.初始化三个步骤. (1)进程的结束 每当执行一个java程序时,将会启动一个java虚拟机进程,无论程序多么复杂.有多少线程.都在这个java虚 ...

  3. java zipfile用法_Java使用ZipFile类实现Zip文件解压

    java.util.zip.ZipFile类用于从 ZIP 文件读取条目. 即从给定的ZIP压缩文件中获取所有文件的信息,如:文件的名称.是否为目录等信息.可以使用这个类来实现将zip文件进行解压操作 ...

  4. java异常 子类_Java异常 Exception类及其子类(实例讲解)

    C语言时用if...else...来控制异常,Java语言所有的异常都可以用一个类来表示,不同类型的异常对应不同的子类异常,每个异常都对应一个异常类的对象. Java异常处理通过5个关键字try.ca ...

  5. java bigdecimal赋值_Java中BigDecimal类介绍及用法(亲测)

    Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算. 其中 BigInteger 类是 ...

  6. java file构造方法_Java中FileOutputStream类的常用方法

    今天动力节点java学院小编将为大家分享Java中FileOutputStream类的常用方法,希望通过此文能够帮助到大家,下面就随小编一起看看Java中FileOutputStream类的常用方法都 ...

  7. java text 格式化_java.text.DecimalFormat类十进制格式化

    java.text.DecimalFormat类十进制格式化的具体代码,供大家参考,具体内容如下 import java.text.DecimalFormat; class FormatDemo{ p ...

  8. java 下载工具_java文件下载工具类

    java文件工具类是java开发爱好者提供的一个java开源包,让广大java爱好者以及开发者可以直接编译形成class文件进行使用.内容包含io流,图形界面,使用户更好更快的找到相对应文件,并进行相 ...

  9. java math 函数_Java中Math类常用函数总结

    Java中比较常用的几个数学公式的总结: //取整,返回小于目标函数的最大整数,如下将会返回-2 Math.floor(-1.8): //取整,返回发育目标数的最小整数 Math.ceil() //四 ...

最新文章

  1. java 详解 搭建 框架_maven 基本框架搭建详解
  2. python3 识别图片文字
  3. 玩转Linux压缩及归档
  4. Netty--ByteBuf
  5. 怎样检测mysql5.5安装成功_64位wiN7系统中装配MySQL5.5.17(测试安装成功哦!)
  6. Oracle10g数据库的完全卸载:
  7. 用户控件(UserControl)
  8. CSS命名与书写规范
  9. VS编程之查看数组信息
  10. 计算机无法用u盘重装系统,最简单不用U盘电脑重装系统教程
  11. linux光盘引导项,Linux制作grub引导光盘
  12. 有了这些好看的流程图模板,你也可以画出漂亮的流程图
  13. 小程序修改weiui-uploadimg的+号图标为自定义图片
  14. 无法引用Microsoft.Office.Interop.Excel的解决
  15. 海量上传文件服务器端,bat批量上传ftp文件到服务器
  16. luogu P4694 [PA2013]Raper
  17. Java设计登录界面——GUI
  18. 单细胞论文记录(part9)--Spatial charting of single-cell transcriptomes in tissues
  19. 计算机网络知识全面讲解:域名解析的过程
  20. 2022年程序员日记

热门文章

  1. 易语言利用服务器更新,易语言使用FTP服务器更新软件案例
  2. TensorRT(4)-Profiling and 16-bit Inference
  3. Zookeeper是什么?
  4. uda 3.C++二维向量
  5. :网页设计与重构那些事儿
  6. rhel5下限值用户使用su切换身份
  7. Spring构造方法注入类型歧义
  8. 减少图片HTTP 请求的方案
  9. 搭建基于asp.net的wcf服务,ios客户端调用的实现记录
  10. SQL SERVER 2005 进行XML查询