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();方法