본문 바로가기

이펙티브 자바

[이펙티브 자바] 아이템 35. ordinal 메서드 대신 인스턴스 필드를 사용하라

ordinal() 메서드 : 열거 상수가 선언된 순서에 따라 0부터 시작하는 정수 값을 반환해준다. 그러나 이 값은 열거 상수의 순서를 나타내는 데에만 사용되며, 일반적으로 이 값을 외부에서 직접 참조하는 것은 권장되지 않는다. 대신 열거 상수마다 고유한 의미있는 값을 갖는 인스턴스 필드를 추가하는 것이 좋다.

 

열거 상수마다 고유한 의미있는 값을 갖는 인스턴스 필드를 추가한 예시 코드 : 

enum Season {
    SPRING("March", "April", "May"),
    SUMMER("June", "July", "August"),
    AUTUMN("September", "October", "November"),
    WINTER("December", "January", "February");

    private final String[] months;

    Season(String... months) {
        this.months = months;
    }

    public String[] getMonths() {
        return months;
    }
}

public class Main {
    public static void main(String[] args) {
        Season currentSeason = Season.SUMMER;
        String[] months = currentSeason.getMonths();
        System.out.println("Months in summer: " + Arrays.toString(months)); // 출력: Months in summer: [June, July, August]
    }
}

 

 

결론 : ordinal 메서드는 절대 사용하지말자!