enum
의 개념과 필요성
enum
의 특징enum
은 클래스를 상속받을 수 없지만, 내부적으로 java.lang.Enum
클래스를 확장합니다.enum
상수는 JVM 내에서 고유한 객체로 존재하며, 상수마다 딱 하나의 인스턴스만 생성됩니다.enum
상수는 불변(Immutable) 객체입니다. 생성 후 상태가 변경되지 않습니다.values()
: 모든 상수의 배열을 반환합니다.valueOf(String name)
: 이름으로 상수를 찾습니다.name()
및 ordinal()
: 상수의 이름과 순서를 제공합니다.enum
public enum Day {
MONDAY, TUESDAY, WEDNESDAY
}
컴파일 후, 다음과 유사한 클래스로 변환됩니다:
public final class Day extends Enum<Day> {
public static final Day MONDAY = new Day("MONDAY", 0);
public static final Day TUESDAY = new Day("TUESDAY", 1);
public static final Day WEDNESDAY = new Day("WEDNESDAY", 2);
private static final Day[] ENUM_VALUES = {MONDAY, TUESDAY, WEDNESDAY};
private Day(String name, int ordinal) {
super(name, ordinal);
}
public static Day[] values() {
return ENUM_VALUES.clone();
}
public static Day valueOf(String name) {
for (Day day : ENUM_VALUES) {
if (day.name().equals(name)) {
return day;
}
}
throw new IllegalArgumentException("No enum constant " + name);
}
}