2010-12-31 1 views
2

다른 데이터 객체를 비교해야합니다.비행 중에 두 개의 Java 객체 비교 (데이터 유형을 알 수 없음)

아무도 내가 이것을 어떻게 할 수 있는지 말해 줄 수 있습니까? 이전에 얻을 데이터 유형이 무엇인지 모르겠습니다. 내가 아파치 공유지에서 어떤 유틸리티를 사용해야한다면 그것을 참고하십시오.

현재 객체의 평등을 비교하기 위해 .equals()를 사용하고 있습니다. 두 문자열의 품질을 비교할 때 잘 작동합니다. java.sql.date 데이터 형식을 비교하는 경우 두 값이 모두 같지만 불균형을 표시합니다.

아무에게도이 점에 대해 제안 할 수 있습니까?

감사합니다,
나렌드라

이 완전히 당신이 equals()를 호출하는시 객체의 equals() 메소드 구현에 따라 달라집니다
+0

java.sql.Date.equals (다른 java.sql.Date)를 사용하는 경우 날짜는 밀리 초까지 동일해야합니다. 따라서 동일한 값 (getTime() 참조)이 사용될 때 이들은 동일하지 않습니다. – extraneon

+0

equals() 메서드를 재정의하는 것 외에도 Comparator 인터페이스를 살펴볼 수도 있습니다. – Lukasz

답변

1

+0

시간 비교에서 얻고있는 데이터 유형이 무엇인지 알지 못했습니다. 두 개체는 모두 동일한 데이터 형식입니다. 하나는 새로운 값을 포함하고 다른 것은 오래된 값을 포함합니다. – Narendra

+0

그런 다음 해당 데이터 유형에 대해 equals 메소드를 구현하십시오. –

+0

또한'instanceof' 연산자를 사용하여 클래스를 의미하는 데이터 유형을 확인할 수 있습니다 –

0

아시다시피, equals() 방법의 포인트는 객체를 비교하는 것입니다 값은 == 또는 != 연산자를 사용하는 참조 비교와 반대입니다.

예를 들어, java.sql.Date 객체의 경우 정확도로 인해 밀리 초 값과 같이 시간의 특정 부분이 다르기 때문에 날짜가 동일하지 않은 것일 수 있습니다.

본질적으로, 그것은 각 객체에 equals()의 구현에 전적으로 의존합니다. 나는 또한 당신이 을 명확히하고 싶을지도 모른다는 것을 강조 할 것입니다. 정확히 "평등"을 정의하십시오 - 예를 들어 런타임시 동일한 유형 또는 객체에 대한 일부 반사에 의해 기술 된 동일한 공개 필드 이름을 포함합니다 - 그리고 나서 거기에서 작업하십시오 .