Industrial manufacturing
Industrial Internet of Things | Industrial materials | Equipment Maintenance and Repair | Industrial programming |
home  MfgRobots >> Industrial manufacturing >  >> Industrial programming >> Java

Mastering String Representations in Java Enums

Mastering String Representations in Java Enums

Discover how Java enums expose string values, how to customize them with overrides, and best practices for clean, maintainable code.

Default String Representation

Java’s enum type automatically provides a string representation for each constant. By default, calling toString() or name() returns the constant’s identifier. The following example demonstrates this behavior:

enum Size {
   SMALL, MEDIUM, LARGE, EXTRALARGE
}

class Main {
   public static void main(String[] args) {
      System.out.println("string value of SMALL is " + Size.SMALL.toString());
      System.out.println("string value of MEDIUM is " + Size.MEDIUM.name());
   }
}

Output

string value of SMALL is SMALL
string value of MEDIUM is MEDIUM

The output confirms that the default string value equals the enum constant’s name.

Overriding the Default String Value

While name() is final and cannot be overridden, toString() is open for customization. This allows each constant to present a more user‑friendly or domain‑specific string. Below is a concise example where each constant overrides toString() individually:

enum Size {
   SMALL {
      @Override
      public String toString() {
         return "The size is small.";
      }
   },
   MEDIUM {
      @Override
      public String toString() {
         return "The size is medium.";
      }
   };
}

class Main {
   public static void main(String[] args) {
      System.out.println(Size.MEDIUM.toString());
   }
}

Output

The size is medium.

In this example, each enum constant supplies its own toString() implementation, enabling richer textual output.

Advanced Patterns for Enum Strings

For larger enums or when multiple properties are required, a constructor‑based approach keeps code tidy:

enum Size {
   SMALL("S", "The size is small."),
   MEDIUM("M", "The size is medium."),
   LARGE("L", "The size is large.");

   private final String code;
   private final String description;

   Size(String code, String description) {
      this.code = code;
      this.description = description;
   }

   @Override
   public String toString() {
      return description;
   }

   public String getCode() {
      return code;
   }
}

Using a constructor centralizes data and keeps the enum readable. The toString() method remains flexible, and additional getters expose raw values when needed.

Important Notes

name() is a final method defined in java.lang.Enum and cannot be overridden. Java Enum API

Overriding toString() affects System.out.println(), serialization, and any code that relies on the enum’s string representation. Use it judiciously to avoid breaking contract expectations.

For deeper insights into enum design patterns, check out our guide on best ways to create enum strings.

Java

  1. Master Python Strings: Creation, Formatting, and Manipulation
  2. Mastering Java Strings: Creation, Methods, and Best Practices
  3. Master Java Enums: A Complete Guide to Enums & Enum Classes
  4. Java Enum Constructors Explained with Practical Example
  5. Mastering Java EnumMap: Efficient Key-Value Mapping with Enums
  6. Java Strings Class: Mastering String Creation & Manipulation
  7. C Strings: How Null-Terminated Character Arrays Work
  8. Java 8 Overview: New Functional, Streaming, and Date-Time APIs
  9. Mastering Strings in C#: Best Practices & Tips
  10. Mastering Python Strings: Creation, Access, and Manipulation