❗Enum❗

✨ Enum이란?

: 서로 연관된 상수들의 집합

  • 자바 1.5 버전부터 새롭게 추가된 것.
  • 싱글톤으로 관리된다.

Enum 장점

  1. 코드가 단순해지며, 가독성이 좋아진다.
  2. 인스턴스 생성과 상속을 방지하여 상수 값의 타입 안정성이 보장
  3. 컴파일 시 정의한 값 이외의 값을 사용했는지 체크가 가능하다.
  4. 키워드 enum을 사용하기 때문에 구현의 의도가 열거임을 분명하게 파악할 수 있다.

만약 Enum 클래스가 아닌 final static String를 사용해 상수를 표현한다면, 정의한 값이 아닌 다른 값이 들어가도 (ex, 요일을 나타내는 값에 “Apple”이 들어감) 같은 String 값이므로 자바에서는 검사할 방법이 사라진다.

선언

: 별도의 java 클래스로 따로 뺄 수 있다.

public enum Day {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, STAURDAY, SUNDAY;
}
  • 혹은 Class 내부에서 선언 또한 가능하다
public class Date {
    public int year;
    public int month;
    public enum Day {
        MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, STAURDAY, SUNDAY;
    }
}

사용

: enum 타입 또한 객체이므로, 사용할 시 enum형 객체를 만들어 가져오거나 valueOf() 메서드를 이용해 값을 사용할 수 있다.

// 1 enum형 객체 생성
Day day = Day.MONDAY;

// 2 valueOf() 메서드 사용
Day day = Day.valueOf("MONDAY");

메서드

  • values() : 열거된 모든 원소를 배열에 담아 순서대로 리턴
  • ordinal() : 원소에 열거된 순서를 정수 값으로 리턴
  • valueOf() : 매개변수로 주어진 String과 열거형에서 일치하는 이름을 갖는 원소 리턴

Enum 매핑

  • 상수를 가져오면 상수의 고유 값을 출력할 수 있도록 할 수 있다.
enum Season {
    private String season;

    SPRING("봄")
    SUMMER("여름")
    FALL("가을")
    WINTER("겨울")

    // 생성자
    private Season (String season) {
        this.season = season;
    }

    public String getSeason() {
        return season;
    }
}

// 사용

public static void main(String[] args) throws Exception {
    Season s = Season.SUMMER;
    System.out.println(s.name()); // 열거 객체명 출력 : SUMMER
    System.out.println(s.getSeason()); // 매핑된 열거 데이터 출력 : 봄
}

enum 타입 또한 객체이므로 객체의 점 표기법을 이용해 접근이 가능하다.

✨ 참고 자료

  • https://limkydev.tistory.com/50
  • https://limkydev.tistory.com/66
  • https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%97%B4%EA%B1%B0%ED%98%95Enum-%ED%83%80%EC%9E%85-%EB%AC%B8%EB%B2%95-%ED%99%9C%EC%9A%A9-%EC%A0%95%EB%A6%AC

카테고리:

업데이트: