Java 파트5-2. 열거 타입

1. 열거 타입


  • 열거 타입 : 열거 상수(한정된 값)을 저장하는 타입
    • 열거 타입의 이름을 정하고 해당 이름으로 소스파일(.java)를 생성한다.
    • 열거 타입 이름은 관례적으로 첫 글자는 대문자로 하고 나머지는 소문자로 한다. 만약 여러 단어의 구성이라면 각 단어의 첫 글자는 대문자로 한다.
    • 비교시 equals이 아닌 == 을 사용한다.

잘 만들어진 소스 파일의 이름

Week.java
MemberGrade.java

2. 열거 타입 선언


[File] - [New] - [Enum] 메뉴를 선택하여 대화상자의 [package] 입력란에는 열거 타입이 속할 패키지 이름을 입력하고, [Name] 입력란에는 열거 타입 이름을 입력하고 Finish를 클릭한다. 그리고 작성하면 된다.

선언
public enum 열거타입이름 {..열거 상수..}

public enum Week {MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY}

열거 타입 이름은 소스 파일 이름과 대소문자가 일치해야 한다. 열거 상수는 열거 타입의 값으로 사용되는데 관례적으로 열거 상수는 모두 대문자로 작성한다. 만약 열거 상수가 여러 단어로 구성될 경우에는 단어 사이에 _를 사용하여 연결하는 것이 관례이다. (ex. LOGIN_SUCCESS)

그림1

열거 상수는 열거 객체로 생성된다. 열거 타입 이름의 객체가 힙 영역에 생성되고 각각의 열거 상수 이름이 열거 타입 객체에 들어가게 된다.

3. 열거 타입 변수 선언, 열거 상수 저장


원형
열거타입 변수;

Week today;
Week reservationDay;

원형
열거타입 변수 = 열거타입.열거상수;

Week today = Week.SUNDAY;
today == Week.SUNDAY; // true
Week birthday = null;

그림2

Week.SUNDAY는 힙 영역에 있는 SUNDAY가 들어 있는 Week 객체의 번지수를 참조한다. 따라서 Week 변수 today에 Week.SUNDAY를 대입하면 참조하는 번지수가 대입되므로 today는 Week.SUNDAY와 같은 객체를 참조하게 된다. 열거 타입은 참조 타입이기 때문에 아직 객체의 참조가 없다는 뜻으로 null로 초기화가 가능하다.


4. 열거 타입을 사용하는 이유


  • 코드가 단순해지며 가독성이 좋다.
  • 인스턴스 생성과 상속을 빙지한다.
  • 구현의도가 열거임을 분명하게 나타낼 수 있다.
    // enum 사용 안 할 경우
    Class Day{
      public final static Day MONDAY = new Day();
      public final static Day TUESDAY = new Day();
    }
    // 사용할 경우
    enum Day{
      MONDAY, TUESDAY;
    }
    

    enum을 사용하지 않으면 위처럼 많은 코드를 사용해야 하지만, enum을 사용하면 간단하게 상수를 저장해서 사용할 수 있다.


본 포스팅은 ‘혼자 공부하는 자바’를 읽고 공부한 내용을 바탕으로 작성하였습니다.


© 2021. By Backtony