>Java >java지도 시간 >Java의 두 객체 속성에 대한 비교 및 ​​자세한 설명

Java의 두 객체 속성에 대한 비교 및 ​​자세한 설명

黄舟
黄舟원래의
2018-05-14 13:39:463383검색

아래 편집기는 Java에서 두 개체의 속성을 기반으로 한 비교를 제공합니다. 편집자님이 꽤 좋다고 생각하셔서 지금 공유하고 모두에게 참고용으로 드리도록 하겠습니다. 편집기를 따라가서 살펴보겠습니다.

두 객체가 동일한지 비교하는 방법에는 두 가지가 있습니다.

1. 상황 1: 두 객체가 동일한지 판단하는 경우 equals() 메서드를 재정의하면 됩니다. 여기서는 설명할 필요가 없습니다

2. 사례 2: 사례 1 외에도 어떤 속성이 다른지 알아야 하며, 그런 다음 클래스 리플렉션을 사용해야 합니다.

구체적인 코드는 다음과 같습니다. 팔로우:

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의 두 객체 속성에 대한 비교 및 ​​자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.