2013-04-02 33 views
1

我已经创建了XOM Element的子类,并且希望将它们与容器一起使用,例如SetHashMap。但是这些需要一个equals(Object obj)方法。我已经实现了一个相等的算法,但不能用它作为XOM.Node()声明equals(Object obj)final。有什么办法可以轻松解决这个问题吗? [我可以创建一个包装/代理,如果这是唯一的方法]。等于()XOM的子类的元素

回答

1

所有的XOM节点都有equals方法和hashCode方法,就像所有的Java对象一样,它们和Container一起使用,比如Set或者HashMap。仅支持身份平等的决定是故意的,这就是为什么平等方法是最终的。问题是为什么你需要使用不同的平等概念?例如。如果两个节点看起来相同但处于不同位置或者处于不同文档中,则通常认为它们是不同的元素。对待它们的用例是什么?

+0

谢谢艾略特。我同意“通常”。我希望比较(和索引)对我的问题有相同表示的元素(可能存在词汇差异 - 例如 - 浮点数或日期或其他字段)。序列化不会这样做。我写了符合我的目的的平等方法。例如,我可能希望排除对我来说相同的元素。我可能会创建自己的容器来管理它们。 –