【发布时间】:2011-10-27 10:00:50
【问题描述】:
我需要比较 Java 中的两个对象,但它们包含很多成员,有些不可见,而且我无权访问源代码 - 它们是来自第三方包的对象。
我需要找出它们之间的区别。类似于比较 C++ 中的内存块。但我不知道如何用 Java 做到这一点。
有什么帮助吗?
编辑:一些进一步的信息:我正在对两个对象进行一些操作 - 一个操作成功,另一个操作失败。但是我不知道有什么不同,这就是我需要这个比较的原因。我似乎无法反思工作,成员不可见异常或类似私人成员的情况。
【问题讨论】:
-
您需要它来进行调试(即比较一次)还是进行逻辑分析?
-
o1.equals(o2)不工作吗? -
@Radu 仅当这两个对象以正确的语义实现 equals 并且其成员的类型相同时才有效。这就像一个深度克隆的比较版本......如果即使是一种成员类型也不会打扰覆盖 equals,那么你就不走运了。
-
@G_H,我当然知道,这就是为什么它是一个问题,而不是一个答案。如果类是质量库的一部分,它们应该支持
equals()。 -
@Radu 够公平的。但是我们没有很多背景信息。看到他提到这些类是第三方的,依赖这个假设是很危险的。并且一些成员可能是 Java SE API 中不覆盖 equals 的类。
标签: java