欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

基于java中两个对象属性的比较

程序员文章站 2024-03-31 14:55:04
两个对象进行比较相等,有两种做法: 1、情况一:当仅仅只是判断两个对象是否相等时,只需重写equals()方法即可。这里就不用说明 2、情况二:当除了情况一之外,还需知...

两个对象进行比较相等,有两种做法:

1、情况一:当仅仅只是判断两个对象是否相等时,只需重写equals()方法即可。这里就不用说明

2、情况二:当除了情况一之外,还需知道是那个属性不同,那么就需要采用类反射,

具体代码如下:

public static void main(string[] args) {
a a = new a();
a.setusername("a");
a.setpassword("p");
a.setqq("q");
a.setwechat("w");
 a b = new a();
 b.setusername("a");
 b.setpassword("p");
 b.setqq("q");
 b.setwechat("ww");

 //只是比较两个对象是否相等,那么直接重写equals方法
 system.out.println( a.equals(b));

 try {
  map<string, string> maps = compare( a, b );
  system.out.println();
 } catch (exception e) {
  e.printstacktrace();
 }
}


public static <t> map<string, string> compare(t obj1, t obj2)
  throws exception {

 map<string, string> result = new hashmap<string, string>();

 field[] fs = obj1.getclass().getdeclaredfields();
 for (field f : fs) {
  f.setaccessible(true);
  object v1 = f.get(obj1);
  object v2 = f.get(obj2);
  if( ! equals(v1, v2) ){
   result.put(f.getname(), string.valueof(equals(v1, v2)));

  }
 }
 return result;
}

public static boolean equals(object obj1, object obj2) {

 if (obj1 == obj2) {
  return true;
 }
 if (obj1 == null || obj2 == null) {
  return false;
 }
 return obj1.equals(obj2);
}

以上这篇基于java中两个对象属性的比较就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。