为什么允许枚举枚举的枚举?

eri*_*dal 13 java syntax enums

我无法理解为什么这甚至编译.我试过不同的格式,它们似乎都工作..

为什么有一个合法的enum of enum of enum of..

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的IDE报告它编译得很好,虽然I.E.E对我来说没有意义.

SLa*_*aks 11

您的I界面包含名为的枚举类型E.

此类型实现相同的I接口,因此它继承了该接口包含的所有内容.
这包括E类型本身.

换句话说,I.E.E是从外部I.E继承的访问.EI

  • @MarkoTopolnik这是一个循环引用,而不是由递归引起的无限循环. (4认同)