본문 바로가기
개발/Java

[Java] eqauls, hashCode 구현 시 getter 를 이용하자!

by Allonsy 2022. 4. 8.
반응형

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

 

반응형

댓글