I can’t seem to access instance members of the surrounding class from inside an enum, as I could from inside an inner class. Does that mean enums are static? Is there any access to the scope of the surrounding class’s instance, or do I have to pass the instance into the enum’s method where I need it?
public class Universe { public final int theAnswer; public enum Planet { // ... EARTH(...); // ... // ... constructor etc. public int deepThought() { // -> 'No enclosing instance of type 'Universe' is accessible in this scope' return Universe.this.theAnswer; } } public Universe(int locallyUniversalAnswer) { this.theAnswer = locallyUniversalAnswer; } }
Yes, nested enums are implicitly static.
From the language specification section 8.9: