package lang.object.equals;
import java.util.Objects;
public class UserV2 {
private String id;
public UserV2(String id) {
this.id = id;
}
@Override
public boolean equals(Object obj) {
UserV2 user = (UserV2) obj;
return id.equals(user.id);
}
}
위에 상기한 equals()는 매우 간단한 버전이고 실제로는 더욱 복잡한 코드로 작성을 해야한다.
정확한 equals()를 구현하는 것은 쉽지 않다.
package lang.object.equals;
import java.util.Objects;
public class UserV2 {
private String id;
public UserV2(String id) {
this.id = id;
}
// @Override
// public boolean equals(Object obj) {
// UserV2 user = (UserV2) obj;
// return id.equals(user.id);
// }
@Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
UserV2 userV2 = (UserV2) o;
return Objects.equals(id, userV2.id);
}
@Override
public int hashCode() {
return Objects.hashCode(id);
}
}
실무에서는 IDE가 제공해주는 equals()를 사용하므로, 이런 것들이 있다는 것만 알아두자.