Equals() 와 HashCode() 재정의
@Test
@DisplayName("같은 객체를 equals 비교")
void equals() {
//given
Menu friedChicken = new Menu("후라이드치킨", 16_000);
Menu friedChicken2 = new Menu("후라이드치킨", 16_000);
//when & then
assertThat(friedChicken).isEqualTo(friedChicken2);
}
헤당 코드와 같이 구현한다면, false를 출력한다. 이유는 객체의 equals메서드는 주소값이 서로 다른 객체는 다른객체로 판단하기 때문이다.
이때, 왜 HashCode도 재정의 해야하나?
해당 규약으로 인하여, 서로다른 객체의 해쉬값을 통일시켜주어야 한다.