zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【Java】重写equals方法

2023-06-13 09:15:29 时间

思路

  1. 判断实参对象和当前对象地址释放相同,若相同则是同一个对象
  2. 判断实参对象是否,当前对象所在类,或子类,
  3. 若是则强转,声明比较规则
  4. 比较属性是否相同

实现

@Override
public boolean equals(Object obj){
	//1.判断地址是否相同
	if(this == obj){
		// 若地址相同,则是同一个对象,即两对象相等
		return true;
	}

	//2.判断是否所在类相同
	if(obj instanceof Xxx){
		//3.强转
		Xxx p = (Xxx)obj;
		
		//4.比较属性是否相同,基本数据类型用“==”,引用数据类型用equals()比较
		if(this,xxx == p.xx && this,xxx == p.xx.equals(p.xxx) ...){
			// 若属性相同,则是同一个对象
			return true;
			
		}else{
			// 否则不是同一个对象
			return false;
		}
		
		//4. 或者
		//return this,xxx == p.xx && this,xxx == p.xx.equals(p.xxx) ...
	}
}