Search code examples
javaenumseffective-java

Enum Types as explained in Effective Java by Joshua Bloch


Please see this link. Regarding Enums, Mr. Bloch says

Java’s enum types are classes that export one instance for each enumeration constant via a public static final field.

I read the Enum Class documentation but there was no public static final field, then how does the above statement hold true. Please explain. Thanks


Solution

  • Create a Test.java file and write Test enum:

    public enum Test {
        Hello
    }
    

    compile this class: javac Test.java,and use javap Test to get the compiled class:

    public final class Test extends java.lang.Enum{
        public static final Test Hello;
        public static Test[] values();
        public static Test valueOf(java.lang.String);
        static {};
    }
    

    and you can see the Test class extends from Enum and it has the public static final Hello field.