java 重写equals()
来源:互联网 发布:ppt如何修改图表数据 编辑:程序博客网 时间:2024/05/19 03:42
java 重写equals()
我们往往需要重写父类的equals()方法来实现自定义的相等比较。比如有个Person类,如果两个Person的身份证号和名字相等,那么这两个对象就相等。代码如下:
public class Person { private String idStr; private String name; public Person(String idStr, String name){ this.idStr = idStr; this.name = name; } public static void main(String [] args){ Person p1 = new Person("23233", "zxy"); Person p2 = new Person("232331", "zxy"); boolean b = p1.equals(p2); System.out.println(b); } @Override public boolean equals(Object obj) { //如果引用相等,this和obj时同一个Person对象,strId和name一定相等 if(this == obj){ return true; } //obj不为null 并且 this和obj是同一个类的实例 if(obj!=null && this.getClass().equals(Person.class)){ Person p1 = (Person)obj; //比较strId和name是否相等 if(this.getName().equals(p1.getName()) && this.getIdStr().equals(p1.getIdStr())) return true; } return false; } public String getIdStr() { return idStr; } public void setIdStr(String idStr) { this.idStr = idStr; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
在判断this和obj是否是同一个类的实例时,没有使用instanceof关键字。因为instanceof比较的是左边的对象是否是右边类的一个实例,或者是子类的一个实例。如果Student类继承了Person,我们将Students的一个实例传递给equals()方法,obj instanceof Person 返回true,这不是我们想看到的。this.getClass().equals(Person.class)反射技术来比较两个对象是否是同一个类的实例更准确。
0 0
- JAVA重写equals方法
- JAVA重写equals方法
- java 重写equals方法
- java equals重写
- 【JAVA】Equals重写
- java 重写equals()
- java equals重写
- Java重写equals
- Java 重写equals
- Java重写equals方法
- java 重写 hashCode、equals
- Java重写equals()方法
- java 重写equals()方法
- Java重写equals方法
- Java equals()重写
- java 重写equals方法
- 重写java底层equals
- java override equals(重写equals)
- 安装新版xampp后apache无法启动提示:Apache Service detected with wrong path解决方案
- leetcode Binary Search Tree Iterator
- 图像处理与计算机视觉基础,经典以及最近发展(一)
- python 文件 .py .pyc .pyw .pyo .pyd
- linux 命令系列之 系统定时任务(73)
- java 重写equals()
- 冒泡排序与快速排序
- 第十一周项目1 - 存储班长信息的学生类
- 打造出色 UI 的 7 个法则
- MySQL Replication 常用架构
- 图像处理与计算机视觉基础,经典以及最近发展(二)
- openfire开发文档
- 谈交互设计的经验积累
- Linux进程管理