重写类的equals方法

来源:互联网 发布:郑州java程序员工资 编辑:程序博客网 时间:2024/04/19 22:06

equals方法实现的功能是判断两个对象的内容是否相同,Object类中该方法的实现很简单,代码如下:

public boolean equals(Object obj){        return (this==obj);}

如果真正需要在项目中进行比较时,这个equals方法的作用是无法达到实际要求的,所以如果在项目中涉及的类需要比较该类型的对象时,则必须重写equals方法。

package container;public class Name {private String first;private String last;public Name(String f, String l) {this.first = f;this.last = l;}/* * 必须重写toString()方法,若不重写,则打印出来[container.Name@44585f2a], * 因为默认调用的就是该对象的toString()方法 */public String toString() {return this.first + " " + this.last;}/* * 由于在String和基本数据类型封装器中已经重写了equals方法, 而在name类中没有重写, 所以无法删除name对象 * 那么必须重写name的equals方法 */public boolean equals(Object obj) {if (obj instanceof Name) {Name name = (Name) obj;return first.equals(name.first) && last.equals(name.last);}return super.equals(obj);}// 重写类的equals方法必须重写类的hashCode方法public int hashCode() {return first.hashCode();}}

/*equals方法编写示例*/

package container;public class MyEquals {/* * 对象成员变量 */String name;/* * 基本数据类型成员变量 */int n;/* * 判断对象内容是否相同 *  * @param obj需要比较的对象 */public boolean equals(Object obj) {// 若比较的内容是本身if (obj == this) {return true;}// 对象类型不同if (!(obj instanceof MyEquals)) {return false;}// 转换成当前类类型MyEquals m = (MyEquals) obj;/* * 依次比较对象中每个变量 */// name属性不同if (!name.equals(m.name)) {return false;}// n属性不同if (!(n == m.n)) {return false;}// 如果都相同,则返回truereturn true;}}


0 0
原创粉丝点击