Почему "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
для меня не имеет смысла.
Ответы
Ответ 1
Ваш I
интерфейс содержит тип перечисления с именем E
.
Этот тип реализует тот же интерфейс I
, поэтому он наследует все, что содержит этот интерфейс.
Это включает сам тип E
.
Другими словами, I.E.E
обращается к I.E
как унаследованный E
от внешнего I
.