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

用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方法测试结果:

在这里插入图片描述

可以看到,这时候两个对象是相等的了。

发布了136 篇原创文章 · 获赞 109 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/104074529