我无权访问基类代码。但是需要能够在子类中定义 equals,同时考虑一些基类属性。
此外,基类没有 protected 字段。所有字段只能通过访问器/修改器访问。
仅对我的子类 equals 中的基类字段进行比较会被认为是不好的吗?为什么 ?
我需要这样做,因为我的基类有一个默认的 equals,它不适合我的目的,但它也有在做子类 equals 时需要考虑的字段......
最佳答案
是的,你可以这样做,在你的父类(super class)中调用 getter 不会有任何问题,因为你可以用任何你想要的方式确定相等性,只要你遵守约定:
Reflexive: x.equals(x) should return true.
Symmetric: x.equals(y) == y.equals(x)
Transitive: x.equals(y) && y.equals(z) => x.equals(z)
Consistent: Multiple invocations of x.equals(y) consistently return true or false unless x or y is mutated between calls.
以及 equals-hashcode 契约:
Equal objects must have equal hashcodes
http://download.oracle.com/javase/6/docs/api/java/lang/Object.html#equals(java.lang.Object)
关于java - 基类没有定义 equals 但子类需要定义。如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5034255/