Skip to main content Link Search Menu Expand Document (external link) Copy Copied

Java의 Enum Type

Java에서는 JDK 1.5부터 향상된 성능의 Enum 클래스를 지원한다. 이는 C/C++의 int 값 기반 Enum에 비해 여러 가지 장점을 가지고 있다.


Enum Type의 사용 이유

Enum Type을 사용하면, 관련된 상수들을 그룹화하여 몇 가지 문제점을 해결할 수 있다.

  • 개발자의 실수를 줄일 수 있다.
  • 변수명을 깔끔하게 사용할 수 있으므로, 코드를 한 눈에 이해하기 쉽다.
  • Enum이 제공하는 편리한 기능을 활용할 수 있다.
  • 유지보수가 간편하다. 새로운 상수를 추가할 때는 Enum에 식별자를 하나 더 추가하기만 하면 된다.
  • Enum의 인스턴스는 싱글톤으로 생성되므로, 프로그램 어디에서나 접근이 가능하다.

Enum Type의 사용 방법

기본적인 Enum 클래스 정의

public enum Day {
    MON, TUE, WED, THU, FRI, SAT, SUN
}

필드가 추가된 Enum 클래스 정의

public enum Day {
    MON("Monday","Mon",0),
    TUE("Tuesday","Tue",1),
    WED("Wednesday","Wed",2),
    THU("Thursday","Thu",3),
    FRI("Friday","Fri",4),
    SAT("Saturday","Sat",5),
    SUN("Sunday","Sun",6);

    private String full;
    private String lower;
    private int index;

    Day(String full, String lower, int index) {
        this.full = full;
        this.lower = lower;
        this.index = index;
    }

    public String getFull() {
        return full;
    }

    public String getLower() {
        return lower;
    }

    public int getIndex() {
        return index;
    }
}

Enum에서는 필요한 로직을 추가하거나 Lombok 어노테이션을 사용해 코드를 더 간결하게 작성할 수 있다.


Enum Type의 기능

Enum Type은 여러 유용한 메소드를 제공한다.

  • static E values(): 해당 Enum의 모든 상수를 배열로 반환한다.
  • static E valueOf(String name): 전달된 문자열과 일치하는 필드의 상수를 반환한다.
  • protected void finalize(): 해당 Enum 클래스가 final 메소드를 가질 수 없게 된다.
  • String name(): 해당 상수의 이름을 반환한다.
  • int ordinal(): 해당 상수가 정의된 순서에 따라 index를 반환한다.