반응형
eqauls, hashCode 구현 시 getter 를 이용하는 것이 좋다
=> 객체에 직접 접근해서 비교하도록 구현한다면 , 프록시 객체의 경우 제대로 비교를 할 수 없다! (프록시 네 이놈 @_@)
=> 사실 equals, hashCode가 아니어도 getter를 사용하는 것이 좋다
[인텔리제이 Generate 이용하여 구현하는 방법]
1. command + n 으로 Generate 메뉴 열은 후 equals() and hashCode() 클릭
2. Use getters during code generation 선택 후 Next next next~
3. 인텔리제이가 만들어준 코드!
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Address address = (Address) o;
if (getCity() != null ? !getCity().equals(address.getCity()) : address.getCity() != null) return false;
if (getStreet() != null ? !getStreet().equals(address.getStreet()) : address.getStreet() != null) return false;
return getZipcode() != null ? getZipcode().equals(address.getZipcode()) : address.getZipcode() == null;
}
@Override
public int hashCode() {
int result = getCity() != null ? getCity().hashCode() : 0;
result = 31 * result + (getStreet() != null ? getStreet().hashCode() : 0);
result = 31 * result + (getZipcode() != null ? getZipcode().hashCode() : 0);
return result;
}
반응형
'개발 > Java' 카테고리의 다른 글
[Java] 표준 예외를 사용하라 (0) | 2022.08.16 |
---|---|
[Java] Arrays.asList / 특징 / 배열을 List 컬렉션으로 바꾸기 (0) | 2022.04.13 |
[JAVA8] HashMap 성능 / 내부구조 (1) | 2022.01.31 |
[JUnit] #01. JUnit 5 개요 / Java 버전 / 예시 프로젝트 (0) | 2022.01.24 |
[Lombok] @Builder / @Builder.Default / @Singular (0) | 2022.01.21 |
댓글