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
'책 > EFFECTIVE JAVA' 카테고리의 다른 글
[모든 객체의 공통메서드] 아이템12. toString을 항상 재정의하라 (0) | 2024.07.09 |
---|---|
[모든 객체의 공통메서드] 아이템11. equals를 재정의 하려거든 hashCode 도 재 정의하라 (0) | 2024.07.08 |
[객체생성과 파괴] 아이템9. try-finally보다는 try-with-resources를 사용하라 (0) | 2024.07.04 |
[객체생성과 파괴] 아이템8. finalizer와 cleaner 사용을 피하라. (0) | 2024.07.02 |
[객체생성과파괴]아이템7. 다쓴 객체 참조를 해제하라 (0) | 2024.06.28 |