다운 캐스팅(Down-Casting)

J._NA 개발일지·2025년 3월 13일

?= 연산자

REF_TABLE_DES ?= 
    CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( P_TABLE ).

여기서'?=' 이것을 어떻게 해석하면 될까?

ABAP에서 "다운 캐스팅(Down-Casting)" 을 수행할 때 사용하는 연산자입니다.
즉, 부모 클래스 타입의 객체를 자식 클래스 타입의 참조 변수에 할당할 때 사용

위 코드 해석

위 코드를 해석해 보면:

CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( P_TABLE )

CL_ABAP_TYPEDESCR 클래스의 정적 메서드 DESCRIBE_BY_NAME 를 호출하는 코드입니다.
이 메서드는 P_TABLE의 타입 정보를 반환합니다.
반환 타입은 부모 클래스인 CL_ABAP_TYPEDESCR입니다.
REF_TABLE_DES ?= ...

REF_TABLE_DES는 자식 클래스의 참조 변수 입니다.
?= 연산자를 사용하여 부모 타입(CL_ABAP_TYPEDESCR)을 자식 타입(CL_ABAP_TABLEDESCR)으로 캐스팅합니다.

?= 와 = 의 차이

예제 코드

?= 사용시 주의 사항

요약!

  • ?= 는 부모 타입을 자식 타입으로 캐스팅(다운 캐스팅)할 때 사용됩니다.
  • CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( P_TABLE ) 는 부모 클래스(CL_ABAP_TYPEDESCR)의 객체를 반환하므로, 이를 CL_ABAP_TABLEDESCR 타입에 할당하려면 ?= 가 필요합니다.
  • 다운 캐스팅 시 반드시 IS INSTANCE OF 로 타입 검사를 수행하면 안전합니다.
profile
아밥 & 프론트엔드 개발자

0개의 댓글