Backend Development 7 min read

Unlock Java Enums: Deep Dive into Their Essence, Usage, and Advanced Patterns

This article explains Java enums, their underlying class inheritance, key Enum methods, practical code examples, and advanced uses such as implementing singletons and strategy patterns, helping developers master enums for robust backend development.

macrozheng
macrozheng
macrozheng
Unlock Java Enums: Deep Dive into Their Essence, Usage, and Advanced Patterns

Overview

Java enums are commonly used to define a fixed set of values, such as days of the week or seasons, but many developers are unaware of their underlying implementation and powerful capabilities.

Enum Definition and Basic Usage

Enums define a limited collection of constant values.

<code>enum WeekEnum {
    MONDAY, TUESDAY
}

enum StatusEnum {
    ENABLE("1", "Enabled"),
    DISABLE("0", "Disabled");

    private String code;
    private String name;

    StatusEnum(String code, String name) {
        this.code = code;
        this.name = name;
    }
}
</code>

Key Enum Methods (java.lang.Enum)

static Enum valueOf(Class enumClass, String name) – returns the enum constant with the specified name.

String toString() – returns the name of the enum constant.

int ordinal() – returns the position of the constant in the enum declaration (starting at 0).

int compareTo(E other) – compares the order of two enum constants.

Practical Example

<code>public static void main(String[] args) {
    // Get enum by name
    StatusEnum enable = Enum.valueOf(StatusEnum.class, "ENABLE");
    System.out.println(enable);
    // Enum comparison using ==
    System.out.println(enable == StatusEnum.ENABLE);

    // Retrieve all enum values
    StatusEnum[] values = StatusEnum.values();
    for (StatusEnum statusEnum : values) {
        // Print the ordinal of each enum constant
        System.out.println(statusEnum.ordinal());
    }
}
</code>

Running the above code produces the expected enum instance, a true comparison result, and the ordinal values of the constants.

The Essence of Enums

At compile time, an enum is a class that extends

java.lang.Enum

. The enum constants become static fields of the enum class, and the class initialization creates the enum objects.

During class loading, the static fields

ENABLE

and

DISABLE

are instantiated.

Common Enum Use Cases

Enum as Singleton

Enums provide a thread‑safe way to implement the singleton pattern, guaranteeing a single instance and protecting against serialization attacks.

<code>public class User {
    private User() {}
    static enum SingletonEnum {
        INSTANCE;
        private User user;
        private SingletonEnum() { user = new User(); }
        public User getInstance() { return user; }
    }
    public static User getInstance() {
        return SingletonEnum.INSTANCE.getInstance();
    }
}
</code>

Enum with Abstract Methods (Strategy Pattern)

Enums can declare abstract methods and let each constant provide its own implementation, enabling flexible strategy selection.

<code>enum OperEnum {
    ADD(1, 2) {
        @Override public Integer operate() { return getA() + getB(); }
    },
    MULTIPLY(1, 2) {
        @Override public Integer operate() { return getA() * getB(); }
    };
    private Integer a;
    private Integer b;
    OperEnum(Integer a, Integer b) { this.a = a; this.b = b; }
    public abstract Integer operate();
    public Integer getA() { return a; }
    public Integer getB() { return b; }
}
</code>

Conclusion

The article covered the fundamental nature of Java enums, their compiled form, essential methods, and advanced applications such as singletons and strategy patterns, providing developers with a deeper understanding to write cleaner and more robust backend code.

backenddesign patternsJavaprogrammingenum
macrozheng
Written by

macrozheng

Dedicated to Java tech sharing and dissecting top open-source projects. Topics include Spring Boot, Spring Cloud, Docker, Kubernetes and more. Author’s GitHub project “mall” has 50K+ stars.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.