¿Cómo es que este código no se compila?Java: ¿cómo es que esto no se compila?
class A
{
class B
{
public enum Enum <-- this line
{
AD,
BC
}
}
}
Compilador informa:
enum declarations allowed only in static contexts.
Pero luego, cuando me pongo la enumeración de clase dentro de una, todo está bien.
Esto es bastante sorprendente. No creo tener este problema en C++.
Una enumeración es una bestia intrínsecamente estática. En el ejemplo anterior, solo desea que haya un objeto Enum.AD. Pero si declaraste una enumeración dentro de una clase no estática, (en teoría) necesitarías una instancia diferente de Enum.AD para cada alcance sinamico. Eso no tiene sentido ... por lo tanto, está prohibido. –