2014-09-14 3 views
13

나는 이것이 심지어 컴파일되는 이유를 이해할 수 없다. 다른 형식으로 시도했는데 모두 작동하는 것 같습니다.'enum of enum of enum ...'이 허용되는 이유는 무엇입니까?

enum of enum of enum of..은 합법적입니까? I.E.E 나에게 이해가되지 않지만

interface I { 

    enum E implements I { 
     VAL; 
    } 

    class Test { 
     I.E   f1 = I.E.VAL; 
     I.E.E  f2 = I.E.VAL; 
     I.E.E.E  f3 = I.E.VAL; 
     I.E.E.E.E.E f4 = I.E.VAL; 

     I.E v1 = I.E.VAL; 
     I.E v2 = I.E.E.VAL; 
     I.E v3 = I.E.E.E.E.E.E.VAL; 
     I.E v4 = I.E.E.E.E.E.E.E.E.E.E.VAL; 
    } 
} 

내 IDE, 그것은 잘 컴파일보고합니다.

답변

11

I 인터페이스에는 E이라는 열거 형이 있습니다.

이 유형은 동일한 I 인터페이스를 구현하므로 해당 인터페이스에 포함 된 모든 것을 상속합니다.
여기에는 E 유형 자체가 포함됩니다.

즉, 은 E에서 상속 된 I.E에 액세스하고 있습니다.이 주소는 I입니다.

+0

Java *는 인터페이스에 대한 상속 규칙을 더 간단하게 만들 수 있습니다. 이 규칙을 이용하면 거의 무의미한 재귀가 없더라도 아무런 의미가 없습니다. –

+0

@MarkoTopolnik : 수업에도이 작업을 수행 할 수 있습니다. – SLaks

+1

여기에는 무한 재귀가 없습니다. – specializt