Подтвердить что ты не робот

Почему "enum of enum of enum..` разрешено?

Я не могу понять, почему это даже компилируется. Я пробовал в разных форматах, и все они работают.

почему законно иметь 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;
    }
}

My IDE сообщает, что он компилируется просто отлично, хотя I.E.E для меня не имеет смысла.

4b9b3361

Ответ 1

Ваш I интерфейс содержит тип перечисления с именем E.

Этот тип реализует тот же интерфейс I, поэтому он наследует все, что содержит этот интерфейс.
Это включает сам тип E.

Другими словами, I.E.E обращается к I.E как унаследованный E от внешнего I.