如何比较两个对象是否相等?直接用==只能判断是否引用同一个对象。如果两个对象有可能分别属于超类和子类呢?下面是写一个相等测试方法equals()的步骤。
假设要比较的对象是otherObject,类型是Object,this表示自身。
- 首相用this == otherObject快速判断是否具有相同内存地址,如果是,返回真。
- 判断otherObjective == null,如果是,返回假。
- 再判断是否属于同一个类
3.1 如果超类有同一的相等标准,那么使用instanceof
3.2 如果子类有自定义的相等标准,那么使用getClass() - 将otherObject强制转换成this的类,用other表示
- 判断实例域是否相等
return this.field1 == oterh.field1
&& …;