goal
열거형 (enum)을 이해한다.
1. enum
enum은 서로 연관된 상수들의 집합을 말한다.
[1] enum 정의방법
enum 열거형이름 {상수명1, 상수명2, 상수명3...}
enum 열거형이름 {상수명1(특정값1), 상수명2(특정값2), 상수명3(특정값3)..}
{상수명1, 상수명2, 상수명3}
을 열거상수라고 한다.
- 중요한 것은, 열거상수의 각각은 객체이다.
[2] enum 사용예시
- 기본사용법
enum Week {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}
public class When{
public static void main(String[] args) {
System.out.println(Week.Monday) // [1번째] Monday
Week when = Weeek.Friday;
Systemo.out.println(when); // [2번째] Frideay
}
}
- enum의 활용(열거상수 + 스위치문)
enum Week {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}
public class Main {
public static void main(String[] args) {
Week when = Week.Monday;
switch(when) {
case Monday:
System.out.println("월요일이라니.......");
break;
case Tuesday:
System.out.println("화요일이라니........");
break;
case Wednesday:
System.out.println("수요일이라니........");
break;
}
}
}
- enum의 활용(열거값 뽑아내기)
enum Week {
Monday(100), Tuesday(200), Wednesday(300), Thursday(400), Friday(500), Saturday(600), Sunday(700);
int value;
private Week(int value){
this.value = value;
}
public int getValue(){
return value;
}
}
public class Note {
public static void main(String[] args) {
Week when = Week.Monday;
switch(when) {
case Monday:
System.out.println("월요일의 적극성 : " + when.getValue());
break;
case Tuesday:
System.out.println("화요의 적극성 : " + when.getValue());
break;
case Wednesday:
System.out.println("수요일의 적극성 : " + when.getValue());
break;
}
}
}
※ 열거형에 값을 넣을 때는 pirvate 생성자
를 반드시 만들어줘야한다 -> 만들지 않으면 오류 발생
열거형값이
생성자로 들어가게 되어, 초기화가 되어진다.private 생성자
가 아닌 경우 오류가 나게 되는데 이유는 아래와 같다.열거 객체
는 컴파일이 된 시점에static final
으로 번역이 되어진다.static final
은 두가지 경우로 초기화가 가능하다[1] 선언 동시 초기화
[2] 생성자를 통한 초기화
- 상수는 바뀌지 않는 값을 의미하는데, public이나 기타 접근제어자로 선언한다면 인스턴스 생성마다 값이 바뀌게 될 가능성이 있으므로 java에서는 이를 허용하지 않는다.(이를 방지한다.)
[3] 열거 객체 메소드 종류
리턴타입 | 메소드(매개변수) | 설명 |
String | name() | 열거 객체가 가지고 있는 문자열을 리턴한다. 리턴되는 문자열은 열거타입을 정의의할 때 사용한 상수 이름과 동일하다. |
int | ordinal | 열거 객체의 순번(0부터 시작)을 리턴한다. |
int | compartTo(비교값) | 주어진 매개값과 비교해서 순번 차이를 리턴한다. |
열거타입 | valueOf(String name) | 주어진 문자열의 열거 객체를 리턴한다. |
열거배열 | values() | 모든 열거 객체들을 배열로 리턴한다. |