关于 java 中的 Equals with Objects 和 类
Regarding Equals in java with Objects and Classes
让我们说 java 我有一个 Class A 和一个扩展 A 的 Class B。
注意:类A 和 B 没有 equals 方法!
我愿意:
A a = new B();
B b = new B();
a.equals(b);
结果是假的。我想当我们做 equals 时它会动态地绑定到 a 和 b 这将使它成为现实。或者是因为在编译时它查看 a 并假设 equals 是 equals(A) 并且因为它的 a B for B b = new B();它说假的?还是我两方面都错了?
因为你没有覆盖 equals
那么它将使用 Object
的方法
如果您查看对象的源代码
@param obj the reference object with which to compare.
public boolean equals(Object obj) {
return (this == obj);
}
显然 a
对 b
有不同的引用,因此 false
让我们说 java 我有一个 Class A 和一个扩展 A 的 Class B。
注意:类A 和 B 没有 equals 方法!
我愿意:
A a = new B();
B b = new B();
a.equals(b);
结果是假的。我想当我们做 equals 时它会动态地绑定到 a 和 b 这将使它成为现实。或者是因为在编译时它查看 a 并假设 equals 是 equals(A) 并且因为它的 a B for B b = new B();它说假的?还是我两方面都错了?
因为你没有覆盖 equals
那么它将使用 Object
的方法
如果您查看对象的源代码
@param obj the reference object with which to compare.
public boolean equals(Object obj) {
return (this == obj);
}
显然 a
对 b
有不同的引用,因此 false