假想有时候会碰到这样的业务需求,产品要求用户的名字和年龄相同的话,就是同一个用户,要做出判断,给出提示。
新建一个UserInfo类:
public class UserInfo {
private String id;
private String userName;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public UserInfo(String id, String userName, int age) {
this.id = id;
this.userName = userName;
this.age = age;
}
}
用main方法做一个测试:
public class TestMain {
public static void main(String[] args) throws Exception {
UserInfo userInfo1 = new UserInfo("1", "jiejie", 16);
UserInfo userInfo2 = new UserInfo("2", "jiejie", 16);
System.out.println(userInfo1.equals(userInfo2));
}
}
运行结果是:
接下来重写UserInfo类的equal()方法,让UserInfo类的对象只要姓名和年龄相等就是相同人:
public class UserInfo {
private String id;
private String userName;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public UserInfo(String id, String userName, int age) {
this.id = id;
this.userName = userName;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (obj != null) {
if (obj instanceof UserInfo) {
UserInfo userInfo = (UserInfo) obj;
return this.userName.equals(userInfo.userName) && this.age == userInfo.age;
}
}
return false;
}
}
再次运行main方法测试结果:
可以看到,这时候两个对象是相等的了。