개발을 하다보면 똑같은 계절이라고 할지라도 어디에서는
봄, 여름, 가을, 겨울로 관리할 수 있고
다른 곳에서는 계절에 순서인 1,2,3,4 로 관리할 수 있다.

! 이러한 다양한 경우를 하나로 묶어서 관리할 수 있게 해주는 것이 바로 java enum이라고 할 수 있다.
 - enum에 대한 자세한 설명은 우아한형제들 기술 블로그 Java Enum 활용기에서 확인할 수 있다.


여기에서는 enum에 대한 설명이 아닌 사용 법만 공유하겠다.

1. 먼저 enum에서
봄, 여름, 가을, 겨울은 String typeCode로 관리하고 싶고
1, 2, 3, 4 int형인 seasonOrder로 관리하고 싶을때 변수를 선언하고 생성자를 이용하면 해당 내용을 등록할 수 있다.
(아래 화면은 intelliJ에서 보기 쉽게 나타내준 화면이다)

2. values()를 이용하면 enum이 가진 항목의 값들을 배열로 받아준다.

따라서 getTypeCodeByName 에서 확인하듯
해당하는 name의 typeCode 전체 확인을 통해 가져올 수 있다.

3. valueOf("SUMMER")
valueOf은 단순히 String값을 반환하는 것이 아닌 인스턴스를 반환하기 때문에 main함수에서처럼
결과 값에 getTypeCode와 getSeasonOrder을 사용할 수 있다.

public enum SeasonEnum {
    SPRING("봄", 1),
    SUMMER("여름", 2),
    FALL("가을", 3),
    WINTER("겨울", 4);

    private String typeCode;
    private int seasonOrder;

    SeasonEnum(String typeCode, int seasonOrder) {
        this.typeCode = typeCode;
        this.seasonOrder = seasonOrder;
    }

    public static String getTypeCodeByName(String name) {
        for (SeasonEnum type : SeasonEnum.values()) {
            if (type.name().equals(name)) {
                return type.getTypeCode();
            }
        }
        return "";
    }

    public static int getSeasonOrderByName(String name) {
        for (SeasonEnum type : SeasonEnum.values()) {
            if (type.name().equals(name)) {
                return type.getSeasonOrder();
            }
        }
        return 0;
    }

    public String getTypeCode() {
        return typeCode;
    }

    public int getSeasonOrder() {
        return seasonOrder;
    }
}

> lombok에 getter을 이용하면 좀 더 코드를 깔끔하게 관리할 수 있다.

import java.util.Arrays;

public class main {
    public static void main(String[] args) {


        System.out.println(SeasonEnum.SPRING.getSeasonOrder());
        //1
        
        System.out.println(SeasonEnum.SUMMER.getTypeCode());
        //여름

        System.out.println(SeasonEnum.getTypeCodeByName("SPRING"));
        //봄
        
        System.out.println(Arrays.toString(SeasonEnum.values()));
        //[SPRING, SUMMER, FALL, WINTER]
        
        System.out.println(SeasonEnum.valueOf("SUMMER").getSeasonOrder());
        //2
        System.out.println(SeasonEnum.valueOf("SUMMER").getTypeCode());
        //여름
    }
}

+ Recent posts