나는 복잡한 객체를 가지고 있으며 동등한 경우에만 특정 속성 만 검사하려고하며, 그렇다면 비교 된 객체를 동일하게 간주해야합니다.복잡한 개체에 대한 사용자 지정 동일성 검사 방법?
비교 중에 일부 필드를 생략하려는 경우가 있으므로 기본 equal()
메서드를 재정의하고 싶지 않습니다.
public class ComplexObject {
private ObjectA a;
//...
prrivate ObjectN n;
}
public class ObjectA {
private String name;
private int age;
}
지금 모든 개체에 대해 내가
Comparator
의 일종이 필요 것 (다만
java.util.Comparator
하지 equalness을 확인하기 위해, 순서에 사용되는 클래스이다).
boolean compare(ObjectA a1, ObjectA a2) {
return a1.getName().equals(a2.getName()); //age intentionally left out, just showcase
}
그리고 내가 함께 체인에 모든 "비교기"가 하나 개의 비교기는 false
을 반환하는 경우 깨고, 다른 후 하나를 확인할 것입니다. 결국 복잡한 객체 두 개를 비교하기 위해 boolean ComplexComparator.compare(complexO1, complexO2)
을 호출하면 비교 체인이 포함 된 모든 멤버 객체의 유효성을 검사합니다.
아마 이미 사용자 정의 등가 비교 (구아바, 아파치, 스프링) 요구 사항에 기본 기능을 제공하는 적절한 클래스가 있습니까? 아니면 모든 것을 직접 구현해야합니까?
나는 *입니다) (등호를 위해 *이 정의를 가지고 생각하지 않는다 좋은 아이디어. – TheLostMind
왜 '평등'을 사용할 수 없습니까? 나는 그것을 얻지 못했다. –
원하는대로 호출하십시오. ... – membersound