Одним словом, нет. В соответствии с the JLS:
Константа перечисления определяет экземпляр типа перечисления.
Из этого следует, что каждая константа перечисления, так как она относится к типу Enum, не может содержать новое объявление вложенного члена. Вы можете определить все три ваших «суб» перечисления как вложенные члены Enum, а затем получить доступ к ним как:
Modules.AttackOptions.IDLE
По той же логике (и JLS позволяет) Enum константы могут также содержать переопределения абстрактный или метод по умолчанию, и имеют свое собственное «состояние», например, так:
public enum Modules {
ATTACK(0, 1, 2) { public int getCost() { return 2;} },
MOVE (3, 4, 5) { }, // no method override
SPAWN (6, 7) { public int getCost() { return 1000;} };
private final int[] vars;
private Modules(int... vars) { this.vars = vars; }
public int getCost() { return 1; }
public int[] getVars() { return this.vars; }
public enum AttackOptions {
IDLE, NEAREST, SPAWN
}
}
Не в каком-то смысле я знаю. –
Почему бы вам не попробовать? http://stackoverflow.com/questions/8732710/enum-within-an-enum –