카테고리 없음
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
반응형