카테고리 없음

Objects.hash(...)에서 null이 들어가면 어떻게 처리되나?

jjhim531 2025. 3. 26. 18:53
반응형

이건 자바를 안전하게 쓰려면 꼭 알아야 해요.

Objects.hash(null);

정답 먼저 !! => 에러 안 납니다.
내부적으로 알아서 null을 안전하게 처리해서 해시값을 계산해준다.

 

String kind = null;
int hash = Objects.hash(kind);
System.out.println(hash);  // 출력됨 (예: 31)

내부 동작 방식

  • Objects.hash(...)는 내부적으로 Arrays.hashCode()를 호출한다.
  • 그 안에서 null이 들어오면 자동으로 0으로 처리해서 계산함
public static int hash(Object... values) {
    return Arrays.hashCode(values);
}

그래서 null이 들어가도 아래처럼 안전하게 처리됩니다:

Objects.hash(null, "사과", 123);  // 에러 없이 정상 해시값 반환

 


 

 xxx.hashCode()는 다르다!! 

String kind = null;
int hash = kind.hashCode();  // ❌ NullPointerException 발생!​
  • null 상태에서 .hashCode() 호출하면 무조건 에러 터져요

 


요약 정리

방식 null 안전성 설명
Objects.hash(...) ✅ 안전 null이면 내부에서 0으로 처리
xxx.hashCode() ❌ 위험 null이면 NPE(NullPointerException) 발생
728x90
반응형