IT/Spring

오류_switch 작동방식

So1_b 2023. 1. 16. 18:51

NullPointerException 발생

 

null인 객체의 메서드를 사용하거나 기본자료형에 null를 대입하려고 할때 발생

switch문에서 String사용시

내부적으로 hashCode()을 사용해 문자열을 정수로 변환 후 equals로 값 비교

*String에서 오버라이딩 한 hashCode(): 주소값을 기준으로 계산하지 않고 문자열을 기준으로 계산하기 때문에 다른 객체라도 문자열이 똑같으면 같은 해시값을 가질 수 있음.

 

session.getAttribute("call")의 결과 null일 경우

String으로 형변환 후 hashCode()이 호출되는게 아닌

hashCode()를 먼저 호출하고 결과가 String으로 형변환하는 것.

 

String변환 후 호출되게 끔 코드 변경

 

 

참고한 블로그

https://codingdog.tistory.com/entry/java-switch-%EB%AC%B8-string%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%93%B0%EB%8A%94%EC%A7%80-%EC%98%88%EC%A0%9C%EB%A1%9C-%EC%95%8C%EC%95%84%EB%B4%85%EC%8B%9C%EB%8B%A4