Object.hashCode() vs System.identityHashCode(Object x)

보통 객체에 대한 고유값으로 hashCode() 메쏘드를 많이 사용한다. 최 상위 타입인 Object의 hashCode()는 Override가 가능하기 때문에, 고유값이 아닐경우가 잠재적으로 존재하게 된다. 이런 문제(?)를 해결할 수 있도록 System.identityHashCode(Object x)라는 메서드를 제공하고 있다.

그래서, 기존의 아래와 같은 방식을..

System.out.println(aa.hashCode());

아래의 코드로 바꿔야 한다.

System.out.println(System.identityHashCode(aa));

참고로, 아래처럼 Object가 null인 경우는 0이다.

System.out.println(System.identityHashCode(null));

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.