Programing

Java에서 클래스 내부의 열거 형 유형은 정적입니까?

lottogame 2020. 7. 17. 08:13
반응형

Java에서 클래스 내부의 열거 형 유형은 정적입니까?


내부 클래스 내부에서 가능한 것처럼 열거 형 내부에서 주변 클래스의 인스턴스 멤버에 액세스 할 수없는 것 같습니다. 열거 형이 정적이라는 것을 의미합니까? 주변 클래스의 인스턴스 범위에 액세스 할 수 있습니까? 아니면 인스턴스를 필요한 열거 형의 메소드로 전달해야합니까?

public class Universe {
    public final int theAnswer;

    public enum Planet {
        // ...
        EARTH(...);
        // ...

        // ... constructor etc.

        public int deepThought() {
            // -> "No enclosing instance of type 'Universe' is accessible in this scope"
            return Universe.this.theAnswer;
        }
    }

    public Universe(int locallyUniversalAnswer) {
        this.theAnswer = locallyUniversalAnswer;
    }
}

예, 중첩 열거 형은 암시 적으로 정적입니다.

로부터 언어 사양 섹션 8.9 :

중첩 열거 형 유형은 내재적으로 정적입니다. 중첩 된 열거 형 유형을 정적으로 명시 적으로 선언 할 수 있습니다.


열거 형 인스턴스가 외부 클래스에 묶여 있으면 인스턴스 수준 (정적이 아닌) 내부 열거 형 클래스를 만드는 것은 의미가 없습니다.

예를 들어

public class Foo {
   private enum Bar {
        A, B, C;
   } 
}

열거 형 값이 상수로 올바르게 작동하려면 (액세스 제한을 무시하고 의사 코드)

Bar b1 = new Foo().A
Bar b2 = new Foo().A

b1과 b2는 동일한 객체 여야합니다.

참고 URL : https://stackoverflow.com/questions/663834/in-java-are-enum-types-inside-a-class-static

반응형