Java equals(); 深入

public class Test{
    
    
    public static void main(String[] args) {
    
    
        Address address = new Address("北京","朝阳区","123456");
        User user = new User("张三",address);
        User user2 = new User("张三",address);
        boolean b =user.equals(user2);
        System.out.println(b);
        User user3 = new User("张二",address);
        User user4 = new User("张三",address);
        System.out.println(user3.equals(user4));

    }
}
import java.util.Objects;

public class User {
    
    
    private String name;
    private Address address;

    public User() {
    
    
    }

    public User(String name, Address address) {
    
    
        this.name = name;
        this.address = address;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public Address getAddress() {
    
    
        return address;
    }

    public void setAddress(Address address) {
    
    
        this.address = address;
    }

    @Override
    public boolean equals(Object o) {
    
    
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        if(this.getName().equals(user.getName())&&this.getAddress().equals(user.getAddress())) return true;
        return false;
    }
}

import java.util.Objects;

public class Address {
    
    
    private String city;
    private String street;
    private String zipCode;

    public Address() {
    
    
    }

    public Address(String city, String street, String zipCode) {
    
    
        this.city = city;
        this.street = street;
        this.zipCode = zipCode;
    }

    public String getCity() {
    
    
        return city;
    }

    public void setCity(String city) {
    
    
        this.city = city;
    }

    public String getStreet() {
    
    
        return street;
    }

    public void setStreet(String street) {
    
    
        this.street = street;
    }

    public String getZipCode() {
    
    
        return zipCode;
    }

    public void setZipCode(String zipCode) {
    
    
        this.zipCode = zipCode;
    }

    @Override
    public boolean equals(Object o) {
    
    
        if (this == o) return true;
        if(o==null||!(o instanceof Address)) return false;
        Address address=(Address)o;
        if(
                this.getCity().equals(address.getCity())&&
                        this.getStreet().equals(address.getStreet())&&
                        this.getZipCode().equals(address.getZipCode())
        ) return true;
        return false;


    }
}

 this.getCity().equals(address.getCity())&&
                        this.getStreet().equals(address.getStreet())&&
                        this.getZipCode().equals(address.getZipCode()
此处的equals是String的并不是Adress的equals。因为他们都是字符串故调用的是String中的equals();方法

一定要注意真正调用的是谁的equals();方法

猜你喜欢

转载自blog.csdn.net/qq_45858803/article/details/121427943