qkrtkdwns3410

타입 캐스팅 관련

다운캐스팅JVM오토캐스팅타입추론toString()
15 days ago
·
2 min read

개요

  • Map<String,Object> 구조의 경우 분명 Object 형식으로 밸류를 저장했는데..

  • 어떻게 map.get(키).toString 을 수행하는 경우 제대로 값을 불러올 수 있는지 궁금


  1.  String cTranType = parameterMap.get("cTranType");

    • 의 경우 대입구문 자체의 타입은 Object 이다.

    • 명시적으로 다운캐스팅이 필요함

    • 컴파일 시점에 걸린다

  2.  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 반환이 가능함.







새는 알에서 빠져나오려고 몸부림친다. 알은 세계다. 태어나려고 하는 자는 하나의 세계를 파괴하지 않으면 안 된다. 그 새는 신을 향해 날아간다