关于Java中的equals方法

内容引用自JavaCore章节

 

1.equals方法:继承自Object类,判断两个对象是否具有相同的引用

 

2.Java对equals方法的规定

(1)自反:x.equals(x)必须返回true

(2)对称:x.equals(y)与y.equals(x)必须返回相同值

(3)传递:x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)必须返回true

(4)一致:反复调用x.equals(y)结果必须相同

 

3.如何编写equals方法,必须考虑子类继承的问题

(1)如果子类决定相等的概念,那么要求比较的两个对象getClass()必须相等(对称性)

(2)如果父类决定相等的概念,那么应该使用(instansof 父类)技术比较(对称性)

(3)完整的equals方法如下

//1.使用==检查对象引用是否相等
if(this == otherObject) return true;

//2.检查null引用
if(null == otherObject) return false;

//3.检查是否属于同一个类
//3.1如果子类决定相等概念(注意子类应该定义自己的equals方法)
if(getClass() != otherObject.getClass()) return false;

//3.2如果父类决定相等概念(注意应该将父类equals方法定义为final,防止子类修改)
if(!(otherObject instanceof 父类)) return false;

//4.业务意义的比较
// 比如this和otherObject所有域都相等,则返回true

 

 

 

你可能感兴趣的:(equals)