타입 캐스팅 관련
다운캐스팅JVM오토캐스팅타입추론toString()
개요
Map<String,Object> 구조의 경우 분명 Object 형식으로 밸류를 저장했는데..
어떻게 map.get(키).toString 을 수행하는 경우 제대로 값을 불러올 수 있는지 궁금
String cTranType = parameterMap.get("cTranType");
의 경우 대입구문 자체의 타입은 Object 이다.
명시적으로 다운캐스팅이 필요함
컴파일 시점에 걸린다
String cTranType = parameterMap.get("cTranType").toString()
의 경우 Object 타입에 대해 toString() 수행시에
다운캐스팅을 수행하나?
해당 값의 경우 Map 내부에 값을 저장하는 경우 Object 로 저장이 되었지만
Java JVM 내부의 메타스페이스라는 영역에 클래스 메타데이터 등의 정보가 담겨 있는데
해당 메타데이터를 토대로
런타임
중에 타입을 추론해서 메서드를 수행한다고 한다.다운캐스팅은 아니다.
왜 1번의 경우 오토 캐스팅이 안되는가
1번의 경우 param.get(키) 의 경우 Object 타입이다
Object 타입으로만 해당 값이 String 인지 추론하진 못한다
2번의 경우
toString() 메서드 수행시
Object 타입안에 해당 toString() 이 존재하기에 일차적으로 사용이 가능
또한 toString() 의 경우 반환 타입이
String
이였기 때문에 어차피 String 반환이 가능함.