item10 : equals는 일반 규약을 지켜 재정의하라
1. equals를 재정의하지 않아도 되는 경우
1) 각각의 객체(인스턴스)가 본질적으로 고유할 때
public class MyService {
// 서비스 로직 구현
public void execute() {
// 실행 코드
}
}
// 사용 예시
MyService service1 = new MyService();
MyService service2 = new MyService();
// 서로 다른 서비스 인스턴스는 본질적으로 고유합니다.
System.out.println(service1.equals(service2)); // false2) 인스턴스의 논리적 동치성(logical equality)을 검사할 일이 없을 때
3) 상위 클래스에서 재정의한 equals가 하위 클래스에도 들어맞을 때
4) 클래스가 private 또는 package-private(default)이고 equals 메서드를 호출할 일이 없을 때
2. equals를 재정의해야 하는 경우
값 클래스여도 equals 재정의가 필요 없는 경우
부가 설명 Enum
대표적인 예: Enum
Enum3. equals 메서드 재정의 시 지켜야 할 일반 규약.
4. 양질의 equals 메서드 구현 방법
5. equals 구현 시 주의사항
1) 기본타입 별 비교 방법
2) 참조 타입 필드 비교
3) 배열 필드 비교
4) null 정상 값으로 취급하는 참조 타입 필드일 경우
5) 필드의 표준형을 저장
6) 비용이 싼 필드를 먼저 비교하라(필드 비교 순서)
7) equals를 재정의할 때는 hashCode도 반드시 재정의하자
스터디에서 알아가는 것것
이유
해결 방법
설명:
Last updated