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; }