Come mai questo codice non viene compilato?Java: come mai questo non viene compilato?
class A
{
class B
{
public enum Enum <-- this line
{
AD,
BC
}
}
}
compilatore segnala:
enum declarations allowed only in static contexts.
Ma poi quando ho messo la classe all'interno Enum A, va tutto bene.
Questo è abbastanza sorprendente. Non penso di avere questo problema in C++.
Un enum è una bestia intrinsecamente statica. Nell'esempio sopra, vuoi sempre che ci sia un oggetto Enum.AD. Ma se hai dichiarato un enum all'interno di una classe non statica, avresti (in teoria) bisogno di un'istanza diversa di Enum.AD per ogni ambito di sincronizzazione. Non ha senso ... quindi è proibito. –