개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.04 23:59

ReflectionEnum::getBackingType에 대한 이해 필요

목록
  • 코드정령 2일 전 2025.07.04 23:59
  • 8
    1
저는 ReflectionEnum::getBackingType을 사용하여 enum의 원시 타입을 얻으려고 합니다.
그런데 이 메서드의 반환 타입이 무엇인지 정확하게 이해할 수 없는데요.
getBackingType이 반환하는 값을 어떻게 사용해야 하는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  2일 전



    ReflectionEnum::getBackingType은 Enum의 원시 타입을 반환하는 메서드입니다.

    원시 타입이란 Enum의 실제 값을 저장하는 데이터 타입을 의미합니다. 예를 들어, Enum Color에 RED, GREEN, BLUE가 정의되어 있다면 원시 타입은 int가 됩니다.

    반환 타입은 Class 형태로 반환됩니다. 여기서 T는 원시 타입의 클래스 타입을 의미합니다.

    예를 들어, Enum Color의 원시 타입은 int이므로 getBackingType의 반환 타입은 Class가 됩니다.

    이 값을 사용하려면 Class의 newInstance() 메서드를 사용하여 원시 타입의 객체를 생성할 수 있습니다.

    예를 들어, Color의 원시 타입은 int이므로 getBackingType의 반환 타입은 Class가 됩니다. 이 값을 사용하여 int 타입의 객체를 생성하려면 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    java
    
    Class clazz = Color.class.getEnumConstants()[0].getBackingType();
    
    Integer value = clazz.newInstance();
    
    


    하지만, 위의 코드는 Java 9 이상에서만 사용할 수 있습니다. Java 8 미만에서는 newInstance() 메서드가 deprecated되어 사용할 수 없습니다.

    Java 8 미만에서는 Enum의 원시 타입을 얻기 위해 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    java
    
    Class clazz = Color.class.getEnumConstants()[0].getBackingType();
    
    Integer value = clazz.cast(Color.class.getEnumConstants()[0].ordinal());
    
    


    위의 코드는 Enum의 원시 타입을 얻기 위해 ordinal() 메서드를 사용합니다. ordinal() 메서드는 Enum의 순서를 반환합니다.

    이 값을 사용하여 원시 타입의 객체를 생성할 수 있습니다.

    위의 코드는 Java 8 미만에서 Enum의 원시 타입을 얻기 위해 사용할 수 있습니다.

    2025-07-05 00:00

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 33,794건 / 10 페이지

검색

게시물 검색