Как этот код не компилируется?Java: почему это не компилируется?
class A
{
class B
{
public enum Enum <-- this line
{
AD,
BC
}
}
}
Компилятор сообщает:
enum declarations allowed only in static contexts.
Но тогда, когда я поставил Enum внутри класса А, все в порядке.
Это довольно удивительно. Я не думаю, что у меня есть эта проблема на C++.
Перечисление - это обычное статическое животное. В приведенном выше примере вы только хотите, чтобы там был один объект Enum.AD. Но если вы объявили enum внутри нестатического класса, вам (теоретически) нужен другой экземпляр Enum.AD для каждой симулятивной области. Это не имеет смысла ... поэтому это запрещено. –