728x90

꼭 필요한 경우가 아니면 equals를 재정의하지 말자. 많은 경우에 Object의 equals가  여러분이 원하는 비교를 정확히 수행해준다. 재정의해야 할 때는 그 클래스의 핵심 필드 모두를 빠짐없이, 다섯 가지 규약을 확실히 지켜가며 비교해야 한다.

 

1. 반사성(reflexivity) - 객체는 자기 자신과 같아야한다. 

2. 대칭성(symmetry) - x.equals(y) 라면 y.equals(x) 도 true 여야한다. 

3. 추이성(transitivity) - 첫번째 객체와 두번째 객체가 같고, 두번째 객체와 세번째 객체가 같다면, 첫번째 객체와 세번째 객체도 같아야 한다.

4. 일관성(consistency) - 두 객체가 같다면(수정되지 않는 한)  앞으로 영원히 같아야한다. 

5. non-null(non-null) - 모든 객체가 null이 아니어야 한다.

 

728x90

+ Recent posts