Java知识点-----------重写Object的equals方法

题目:编写Order类,有int型的orderId, String型的orderName,相应的getter()和setter()方法,两个参数的构造器,

重写父类的equals()方法:public boolean equals(Object obj), 并判断测试类中创建的两个对象是否相等。

1. 手动重写

	@Override
	/**
	 **重写Object类的equals的方法
	 */
	public boolean equals(Object obj) {
		//判断两个obj的地址值是否相等,如果相等就是同一个对象,返回true
		if (this == obj) {
			return true;
		}
		//判断obj对象是否是由Order类或其子类创建
		if (obj instanceof Order) {
			//如果obj是由Order或其子类创建,则将obj强转为Order类
			Order o = (Order)obj;
			//注意比较两个类的属性的值是否相等,如果相等返回true
			if (this.getOrderId() ==  o.getOrderId() && this.getOrderName().equals(o.getOrderName())){
				return true;
			}
		}
		return false;
	}

2. eclipse自动的生成代码

	@Override
	public boolean equals(Object obj) {
		//比较两个对象地址值是否相同
		if (this == obj)
			return true;
		//如果某个对象地址值为空,直接返回false
		if (obj == null)
			return false;
		//比较连个对象是否是同一个类
		if (getClass() != obj.getClass())
			return false;
		//如果两个对象是同一个类,则把obj强转为order类型
		Order other = (Order) obj;
		//比较连个对象的属性
		if (orderId != other.orderId)
			return false;
		if (orderName == null) {
			if (other.orderName != null)
				return false;
		} else if (!orderName.equals(other.orderName))
			return false;
		return true;
	}

  

原文地址:https://www.cnblogs.com/japhi/p/14969396.html