# Enums in Java
June 28, 2026 Java Fundamentals
Enums in Java provide a type-safe way to define a fixed set of constants, ensuring compile-time validation, better code readability, and the ability to attach behavior and data to each constant. Here are the basics.
Defining enum
public enum Role {
ADMIN,
CUSTOMER,
EMPLOYEE,
}
// use value.
Role role = Role.ADMIN;
// convert to string.
String stringValue = role.toString();
// parse string as enum value, throws if invalid.
var raw = "CUSTOMER";
Role role = Role.valueOf(raw);
Adding methods on enums
import java.util.Optional;
public enum Role {
ADMIN,
CUSTOMER,
EMPLOYEE;
public static Optional<Role> fromString(String raw) {
for (var value : Role.values()) {
if (value.name().equals(raw)) {
return Optional.of(value);
}
}
return Optional.empty();
}
}
var raw = "CUSTOMER";
Optional<Role> parsed = Role.fromString(raw);
Customizing enum values
public enum Status {
PENDING("pending"),
PROGRESS("progress"),
COMPLETE("complete");
String value;
Status(String value) {
this.value = value;
}
public static Status fromString(String raw) throws IllegalArgumentException {
Status parsed = switch (raw) {
case "pending" -> PENDING;
case "progress" -> PROGRESS;
case "complete" -> COMPLETE;
default -> throw new IllegalArgumentException("invalid enum value: " + raw);
};
return parsed;
}
@Override
public String toString() {
return value;
}
}
var status = Status.PENDING;
System.out.println(status);
var raw = "complete";
var parsed = Status.fromString(raw);