2013-04-02 1 views
1

XOM Element의 하위 클래스를 만들고 Set 또는 HashMap과 같은 컨테이너와 함께 사용하고 싶습니다. 그러나 이들은 equals(Object obj) 방법을 필요로합니다. 동등성을위한 알고리즘을 구현했지만 XOM.Node()equals(Object obj)final으로 선언하므로 사용할 수 없습니다. 이 문제를 쉽게 극복 할 수있는 방법이 있습니까? [유일한 방법 인 경우 래퍼/대리자를 만들 수 있습니다.]은 XOM 요소의 서브 클래스에 대해 같음

답변

1

모든 XOM 노드에는 equals 메소드와 hashCode 메소드가 있으며 모든 Java 객체와 마찬가지로 Set 또는 HashMap과 같은 컨테이너와 함께 사용합니다. 아이덴티티 평등 만 지원하려는 결정은 고의적이었으며 이것이 바로 equals 메서드가 최종적인 이유입니다. 질문은 왜 평등이라는 다른 개념을 사용해야 하는가입니다. 예 : 두 노드가 동일하게 보이지만 위치가 다르거 나 다른 문서에있는 경우 일반적으로 다른 요소로 간주됩니다. 그것들을 동일하게 취급하는 유스 케이스는 무엇입니까?

+0

감사합니다. Eliotte. 나는 "보통"에 동의한다. 내 문제에 대해 동등한 표현을 가진 요소를 비교 (및 색인화)하고 싶습니다 (부동 소수점 숫자 나 날짜 또는 다른 필드에서 어휘 차이가있을 수 있음). 직렬화는이 작업을 수행하지 않습니다. 내 목적을 위해 작동하는 평등 방법을 썼다. 예를 들어 나를 위해 동일한 요소를 제외 할 수 있습니다. 나는 아마 그들을 관리하기 위해 내 자신의 컨테이너를 만들 것입니다. –

관련 문제