Enum 활용법

5794 단어 JavaJava

Enum(열거형)


서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할때 사용하면 유용하다. 열거형은 갖는 값뿐만 아니라 타입도 관리하기 때문에 보다 논리적인 오류를 줄일 수 있다.


Enum의 특징

  • Enum은 static final이다

  • 상속 불가능

  • 그룹핑이 가능(Enum의 Enum으로 조합 가능)

  • Object를 계상받아 Object에서 제공하는 메소드를 활용할 수 있다. 또는 디폴트 메소드를 사용할 수 있다.

  • serializable, comparable이 가능하다.

  • 메소드를 사용하여 기능 확장이 무궁무진하다(상수 + 관련 데이터의 연계 및 연산을 사용할 수 있다.).

  • 비교 연산은 Int 상수와 성능이 비슷하다.


위와 같은 이유로 인해 코드 가독성이 좋으며, 형 안전성이 좋고, 기능이 강력하다.



Enum 활용

가게 마다의 익일 배송, 당일 배송을 기준으로 수령 가능일 조회 api를 구현해야하는데 배송 타입이 칼럼값으로 들어가서 열거형을 활용해 보았다.

public enum Type {

    FAST(0, "fast"), REGULAR(1, "regular");

    private final String delivery_type;
    private final int value;

    Type(int value, String type) {
        this.delivery_type = type;
        this.value = value;
    }

    public String getDelivery_type() {
        return this.delivery_type;
    }

    // 배송 타입 기준으로 수령가능한 가장 이른 날짜를 반환
    public LocalDate getDeliveryDate(boolean beforeClosing, LocalDateTime now) {
        
        int plusDay1 = beforeClosing ? 0 : 1;
        
        ...

        LocalDate startDay = now.toLocalDate();
        // 현재 요청 당일이 주말 혹은 공휴일 인지 확인
        startDay = Holidays.weekendOrHoliday(startDay);
        // 오늘 날짜기준으로 마감시간 전에 시켰으면 + 0, 마김시간 후에 시켰으면 + 1
        startDay = LocalDate.from(startDay).plusDays(plusDay1);
        
        ...
        
        return startDay;
    }
}

주문 날짜를 기준으로 익일 배송이면 +1 당일배송이면 +0을 한다.



참고 자료:

https://ehdvudee.tistory.com/33
자바의 정석 2편

좋은 웹페이지 즐겨찾기