열거 타입(enumeration type)이란?
한정된 값인 열거 상수(enumeration constant)중에서 하나의 상수를 저장하는 타입
예를 들어, 월,화,수,목,금,토,일이라는 7개의 열거 상수가 있으면 이를 저장하는 일주일이라는 열거 타입이 있다.
다음 그림에서, Week가 열거 타입이며, 변수로도 선언이 가능하다.
Week today;
선언된 변수에 저장할 수 있는 것은 Week에 선언된 7개의 열거 상수 중 하나이다.
today = Week.FRIDAY;
<열거 타입 선언>
열거 타입을 선언하기 위해서는 먼저 열거 타입의 이름을 정하고 해당 이름으로 소스파일을 생성해야 함.
- 관례적으로 열거 타입 이름은 첫 글자를 대문자로, 나머지는 소문자로 구성
- 만약 여러 단어로 구성된 이름이라면 각 단어의 첫 글자는 대문자로 함
- 열거 타입 키워드는 public enum으로 이루어져있으며 반드시 소문자로 작성
public enum 열거타입이름 {...}
- 열거 상수는 열거 타입의 값으로 사용되는데, 관례적으로 모두 대문자로 작성
public enum Week { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
- 열거 수가 여러 단어로 구성될 경우에는 단어 사이를 밑줄(_)로 연결
public enum LoginResult { LOGIN_SUCCESS, LOGIN_FAILED }
*열거 타입 선언 방법
<열거 타입 변수>
열거 타입도 하나의 타입이므로 변수를 선언하고 사용해야 함.
Week today; //변수 이름을 today로 선언
Week reservationDay; //변수 이름을 reservationDay로 선언
선언 완료 후 열거 상수 저장이 가능하며, 열거 상수는 단독으로 사용이 불가능하고 반드시 '열거 타입. 열거 상수' 형태로 사용
열거 타입 변수는 참조 타입이기 때문에 null값 저장이 가능함.
Week today = Week.Sunday;
Week birthday = null;
열거 상수는 열거 객체로 생성되기 때문에 참조 타입 변수이다.
열거 타입 변수 Week의 경우 MONDAY부터 SUNDAY까지의 열거 상수는 총 7개의 Week객체로 생성되고, 메소드 영역에 생성된 열거 상수가 해당 Week 객체를 참조한다.
import java.util.Calendar;
import chap05.Week;
public class EnumWeekExample {
public static void main(String[] args) {
Week today = null;
Calendar cal = Calendar.getInstance();
int week = cal.get(Calendar.DAY_OF_WEEK);
switch(week) {
case 1:
today = Week.SUNDAY; break;
case 2:
today = Week.MONDAY; break;
case 3:
today = Week.TUESDAY; break;
case 4:
today = Week.WEDNESDAY; break;
case 5:
today = Week.THURSDAY; break;
case 6:
today = Week.FRIDAY; break;
case 7:
today = Week.SATURDAY; break;
}
System.out.println("오늘 요일: "+ today);
if(today == Week.SUNDAY) {
System.out.println("일요일에는 축구를 합니다.");
} else {
System.out.println("열심히 자바 공부합니다.");
}
}
}
결과 :
다음은 날짜 정보를 제공하는 Calendar 클래스를 사용하여 열거 타입을 연습하는 예제이다.
Calendar를 이용해서 오늘의 요일을 얻고 나서 Week 열거 타입 변수 today에 해당 열거 상수를 대입한다.
Calendar를 사용하기 위해서는 import문이 필요한데, 이 import는 뒤에서 자세히 다룰 것이다.
열거타입이라는건 처음 들어봐따.... 무튼 한 주의 마무리 끝!
'프로그래밍언어 > Java' 카테고리의 다른 글
06-2. 필드 (0) | 2021.01.26 |
---|---|
06-1. 객체 지향 프로그래밍 (1) | 2021.01.25 |
05-2. 배열 (0) | 2021.01.19 |
05-1. 참조 타입과 참조 변수 (0) | 2021.01.18 |
04-2. for문, while문, do-while문 (0) | 2021.01.12 |