구너드 2023. 7. 1. 03:18

형변환(Type Casting)은 변수나 객체의 타입을 다른 타입으로 변환하는 과정, 기본형과 참조형 모두 적용될 수 있음 


기본형 형변환

작은 크기의 데이터 타입을 큰 크기의 데이터 타입으로 변환, 혹은 큰 크기의 데이터 타입을 작은 크기의 데이터 타입으로 변환하는 것

자바에서는 작은 크기의 데이터 타입이 큰 크기의 데이터 타입에 자동으로 형변환이 적용. 그러나 큰 크기의 데이터 타입을 작은 크기의 데이터 타입으로 변환할 때는 명시적인 형변환이 필요

 

예시

int num = 10;
byte b = (byte) num; // 명시전 Type Casting

참조형 형변환

상속 관계에 있는 클래스나 인터페이스 사이에서 발생.

상속 관계에서 자식 클래스의 객체를 부모 클래스의 타입으로 변환하는 것을 업캐스팅이라 하며, 이는 자동으로 형변환이 됨

부모클래스의 객체를 자식 클래스의 타입으로 변환하는 것은 다운캐스팅이라 하며 이는 명시적인 형변환이 필요하며 다운캐스팅할 객체가 원래 해당 타입으로 생성된 것이어야만 가능(instance of 사용)


스프링을 공부하면서 다양한 상황에서 형변환이 되고 이를 이용하여 유연한 코드를 작성하는 경우를 많이 봤다. 실제로 Filter의 경우 ServletResponse 타입이기에 이를 HttpServrletResponse로 다운캐스팅하고, Framework의 확장을 공부하면서 HandlerAdapter가 해당 컨트롤러의 실행 여부를 판단하기 위해 명시적인 Type Casting을 실행하는 경우도 있었다. 비록 쉽게 생각할 수 있는 개념이지만 간단하게나마 한 번 복습하면서 해당 기능을 짚고 넘어가는 게 좋을 듯 하다.