[JAVA] equals(), hashCode()
2024. 2. 26. 11:39ㆍWeb/JAVA
equals()
- 2개의 객체가 동일한지 검사하기 위해서 사용된다.
- 프로그래밍 상 객체는 서로 다른 메모리에 띄워져있으므로 동일한 객체가 아니다.
- 하지만 같은 값을 지니므로 같은 객체로 인식되어야하는데, 이러한 동등성을 위해서 우리는 값으로 객체를 비교하도록 equals() 함수를 오버라이딩 해주는 것이다.
1. 메소드를 재정의 해야하는 경우
- 동일성이 아닌 동등성을 지원해야 할 경우 : Date나 Integer 같이 Value Object 또는 Value Class가 해당
- 상위 equals() 가 하위의 equals 를 충족하지 못하는 경우
2. 메소드를 재정의 하지 않아도 되는 경우
- 각 객체가 고유한 경우 : Active Entity, Thread 와 같은 경우
- 클래스의 동치성 검사방법이 존재하지 않아도 되는 경우
3. 메소드 정의시 준수해야할 일반 규약
- 반사성 : 자기 자신과 같아야한다.
- 대칭성 : 서로 두 객체가 같은지를 물으면 같은 나와야하는 속성
- 추이성 : a=b 이고 b=c 일 때, a=c 임을 보장하여야 한다.
- 일관성 : 같다고 판정된 객체들은 변경되지 않는 한 추후에도 계속 같아야한다.
- Null 에 대한 비-동치성 : o.equals()을 호출하면 false가 반환되어야 한다는 것
hashCode()
- 논리적으로 같은 객체라면, 같은 hashCode를 반환해야한다.
- 그러므로, equals()를 재정의 할거면 hashCode()도 재정의 하는게 맞는것이다.;
'Web > JAVA' 카테고리의 다른 글
[JAVA] 추상클래스(Abstracat) (0) | 2024.03.07 |
---|---|
[JAVA] 멀티스레드 환경에서 문제와 대책 (0) | 2024.02.26 |
[JAVA] 컴파일 과정 (0) | 2024.02.26 |
[JAVA] String / StringBuffer / StringBuilder (0) | 2024.02.23 |
[JAVA] Immutable(불변) / Mutable(가변) (0) | 2024.02.23 |