programing

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

bestcode 2022. 9. 3. 13:23
반응형

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

내부 클래스 내에서와 같이 열거형 내부에서는 주변 클래스의 인스턴스 멤버에 액세스할 수 없습니다.그럼 enum은 정적인 건가요?주변 클래스의 인스턴스 범위에 액세스할 수 있습니까? 아니면 필요한 경우 inum 메서드에 인스턴스를 전달해야 합니까?

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;
    }
}

네, 네스트된 enum은 암묵적으로 정적입니다.

언어 사양 섹션 8.9에서:

중첩된 열거형은 암묵적으로 정적입니다.중첩된 열거형이 정적임을 명시적으로 선언할 수 있습니다.

instance-level(비정적) inner enum 클래스를 만드는 것은 의미가 없습니다.enum 인스턴스 자체가 외부 클래스에 연결되어 있으면 enum 보증이 해제됩니다.

예를 들면,

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

enum 값이 상수로 올바르게 기능하려면 (psuedocode, 액세스 제한 무시)

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

반응형