Wie kommt es, dass dieser Code nicht kompiliert?Java: Wie kommt das Kompilieren?
class A
{
class B
{
public enum Enum <-- this line
{
AD,
BC
}
}
}
Compiler berichtet:
enum declarations allowed only in static contexts.
Aber dann, wenn ich die Enum A innerhalb Klasse setzen, alles ist in Ordnung.
Das ist ziemlich überraschend. Ich glaube nicht, dass ich dieses Problem in C++ habe.
Ein Enum ist ein intrinsisch statisches Biest. Im obigen Beispiel wollen Sie immer nur ein Enum.AD-Objekt haben. Wenn Sie jedoch eine Enumeration in einer nicht statischen Klasse deklarieren, benötigen Sie (theoretisch) für jeden synamic-Bereich eine andere Instanz von Enum.AD. Das macht keinen Sinn ... deshalb ist es verboten. –