【发布时间】:2013-04-02 21:56:30
【问题描述】:
我创建了 XOM Element 的子类,并希望将它们与 Set 或 HashMap 等容器一起使用。然而,这些需要equals(Object obj) 方法。我已经实现了一个相等算法,但不能使用它,因为XOM.Node() 将equals(Object obj) 声明为final。有什么办法可以轻松克服吗? [如果这是唯一的方法,我可以创建一个包装器/委托]。
【问题讨论】:
我创建了 XOM Element 的子类,并希望将它们与 Set 或 HashMap 等容器一起使用。然而,这些需要equals(Object obj) 方法。我已经实现了一个相等算法,但不能使用它,因为XOM.Node() 将equals(Object obj) 声明为final。有什么办法可以轻松克服吗? [如果这是唯一的方法,我可以创建一个包装器/委托]。
【问题讨论】:
所有 XOM 节点都有 equals 方法和 hashCode 方法,就像所有 Java 对象一样,将它们与 Set 或 HashMap 等容器一起使用。仅支持身份平等的决定是经过深思熟虑的,这就是为什么 equals 方法是最终的。问题是为什么你需要使用不同的平等概念?例如。如果两个节点看起来相同但位于不同的位置,或者位于不同的文档中,则通常认为它们是不同的元素。将它们视为相同的用例是什么?
【讨论】: