【发布时间】:2012-07-03 07:57:15
【问题描述】:
我的想法不多了...我正在比较两个对象,它们都有一个自定义类型的数组列表字段。
两个对象都包含数组列表中的一个元素。
当我查看 Eclipse 调试器时,它看起来完全一样,直到最接近的细节,除了不同的 id(在调试器中看起来像:(id=111))
有趣的是,这个不同的 ID 位于一个整数类型(计数器)的字段上。这显然不应该发生,因为整数已经实现了等于和哈希码,对吧?
另一个ID不同的字段是字符串类型(过滤器)
具有这些字段的两个对象之间的 equals 方法返回 false...我不知道为什么...所有 equals 和 hashCode 方法都在每个自定义类型中实现..
这是来自 eclipse 调试器:
对象 1:
Object (id=159)
arrayList ArrayList<E> (id=175)
[0] Item (id=175)
counter Integer (id=179)
filter "abcd" (id=181)
count 4
hash -717152022
offset 2
value (id=189)
对象 2:
Object (id=259)
arrayList ArrayList<E> (id=267)
[0] Item (id=268)
counter Integer (id=268)
filter "abcd" (id=269)
count 4
hash -717152022
offset 2
value (id=270)
【问题讨论】:
-
张贴Short, Self Contained, Correct Example (SSCCE) 证明您的问题将帮助您获得更好的答案。
标签: java compare equals hashcode