개발자 Q&A

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

2025.08.03 00:13

ReflectionEnum::getCases와 Enum 클래스의 상속 관계에 대한 질문

목록
  • 스레드마스터 9일 전 2025.08.03 00:13
  • 62
    1
제가 ReflectionEnum 클래스를 사용하여 Enum 클래스를 상속하여 사용하고 있습니다. 그러나 getCases 메서드의 동작을 이해하지 못하고 있습니다.

ReflectEnum 클래스의 getCases 메서드는 Enum 클래스의 경우 모든 경우(case) 반환하는 것처럼 보입니다. 하지만 Enum 클래스가 상속관계에서 사용되는 경우 getCases 메서드는 상속받은 Enum 클래스의 경우에만 적용되는 것처럼 보입니다.

예를 들어, 다음과 같은 코드가 있습니다.

java

public enum Color {

    RED, GREEN, BLUE

}



public class FruitColor extends Color {

    public static void main(String[] args) {

        System.out.println(Arrays.toString(FruitColor.getCases())); // [RED, GREEN, BLUE]

    }

}



여기서 FruitColor enum은 Color enum을 상속하고 있습니다. 그러나 Color enum은 getCases 메서드를 사용할 수 없는데, 어떻게 이 메서드가 FruitColor enum에 적용되는 것일까요?

혹시 ReflectionEnum::getCases 메서드가 Enum 클래스에만 적용되는 것일까요? 아니면 Enum 클래스의 상속관계에서만 적용되는 것일까요?

혹시 어떤 방법으로 ReflectionEnum::getCases 메서드를 사용하여 Enum 클래스의 모든 경우(case)를 반환할 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  9일 전



    ReflectionEnum::getCases 메서드는 Enum 클래스의 모든 경우(case)를 반환합니다. 그러나 Enum 클래스가 상속관계에서 사용되는 경우, 상속받은 Enum 클래스의 경우에만 적용되는 것처럼 보입니다.

    이러한 현상은 Java의 Enum 클래스가 내부적으로 다형성을 지원하지 않기 때문입니다. Enum 클래스는 내부적으로 하나의 클래스를 사용하여 모든 Enum 값을 표현합니다. 따라서, 상속관계에서 사용되는 Enum 클래스는 내부적으로 하나의 클래스를 공유하기 때문에 getCases 메서드는 상속받은 Enum 클래스의 경우에만 적용되는 것처럼 보입니다.

    ReflectionEnum::getCases 메서드는 Enum 클래스에만 적용되는 것이 아닙니다. Enum 클래스의 상속관계에서 사용되는 경우에도 적용됩니다. 그러나 상속관계에서 사용되는 Enum 클래스는 내부적으로 하나의 클래스를 공유하기 때문에 getCases 메서드는 상속받은 Enum 클래스의 경우에만 적용되는 것처럼 보입니다.

    ReflectionEnum::getCases 메서드를 사용하여 Enum 클래스의 모든 경우(case)를 반환할 수 있는 방법은 Enum 클래스를 사용하는 대신, ReflectionEnum 클래스를 사용하는 것입니다. ReflectionEnum 클래스는 Enum 클래스의 모든 경우(case)를 반환할 수 있습니다.

    예를 들어, 다음과 같은 코드가 있습니다.

    #hostingforum.kr
    java
    
    public class Main {
    
        public static void main(String[] args) {
    
            System.out.println(Arrays.toString(Color.getCases())); // [RED, GREEN, BLUE]
    
            System.out.println(Arrays.toString(FruitColor.getCases())); // [RED, GREEN, BLUE]
    
        }
    
    }
    
    
    
    public enum Color {
    
        RED, GREEN, BLUE
    
    }
    
    
    
    public class FruitColor extends Color {
    
        public static void main(String[] args) {
    
            System.out.println(Arrays.toString(FruitColor.getCases())); // [RED, GREEN, BLUE]
    
        }
    
    }
    
    


    ReflectionEnum::getCases 메서드는 Enum 클래스의 모든 경우(case)를 반환합니다. 그러나 Enum 클래스가 상속관계에서 사용되는 경우, 상속받은 Enum 클래스의 경우에만 적용되는 것처럼 보입니다. ReflectionEnum::getCases 메서드는 Enum 클래스에만 적용되는 것이 아닙니다. Enum 클래스의 상속관계에서 사용되는 경우에도 적용됩니다.

    2025-08-03 00:14

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

검색

게시물 검색