equals() 메소드 :
해당 인스턴스를 매개변수로 전달받는 참조 변수와 비교하여, 그 결과를 반환한다. 이때 참조 변수가 가리키는 값을 비교하므로, 서로 다른 두 객체는 언제나 false를 반환하게 된다.
equals () 메소드는 객체의 내용이 같은지 비교 하기 위해 사용 한다. 일반적으로 객체가 생성될 때 고유한 해쉬코드가 생성되게 되는데 이 해쉬코드를 hashCode 라는 공통 메서드를 호출해 가져올 수 있다. 보통의 정의된 equals 메서드는 내부에서 이 해쉬코드를 비교한다. 하지만 실무에서는 객체의 해시코드만 비교해서는 안될 경우가 종종 있어 equals를 오버라이딩 해서 사용하는 것이다.
equals () 재정의를 위한 오버라이딩 패턴
- == 을 통해 input이 자기 자신의 참조인지 검사
- instanceof 나 getClass 를 통해 input 타입이 명확한지 검사 , not null 체크
- instanceof 나 getClass 를 통해 검사된 객체를 올바른 타입으로 형변환
- 핵심필드가 일치하는지 검사
equals () 메서드 오버라이딩이 필요 없을 경우
- 각 인스턴스가 본질적으로 고유할 때이다. 즉 클래스가 값이 아닌 개체를 표현할때
- 인스턴스가 논리적으로 같음을 증명할 필요가 없어 사용하지 않을 것임이 명확할 때
- 상위 클래스의 재정의 된 메서드가 하위 클래스 에서도 들어 맞을 때
- private 클래스로 메서드가 사용자체가 없는 경우
'JAVA' 카테고리의 다른 글
[JAVA] 입출력 스트림 ① 표준 입출력 (0) | 2023.03.08 |
---|---|
[JAVA] equals()를 재정의 하여 vo 객체 구현 (0) | 2023.03.08 |
[JAVA] == 과 equals( ) 메서드 차이 (0) | 2023.03.08 |
[JAVA] Map 컬렉션 클래스 (0) | 2023.03.07 |
[JAVA] 반복자 Iterator (0) | 2023.03.07 |