열거형. 연관된 상수들의 집합
static final 자료형
같이 상수를 선언할 수도 있지만, 상수가 여러개 일때 불편함이 있다
enum을 사용해 상수를 효과적으로 묶어 사용할 수 있다
enum은 자바 1.5에서 추가되었다
public static final
상수를 그룹으로 묶을 수 있었지만. 숫자로 정의 되어있기 때문에 DAY.MONDAY == MONTH.JANUARY
가 true
가 되는 문제가 있었다.interface DAY {
int MONDAY = 1;
int TUESDAY = 2;
...
}
interface MONTH {
int JANUARY = 1;
int FEBURURAY = 2'
}
class Day {
public final static Day MONDAY = new Day();
public final static Day TUESDAY = new Day();
...
}
class Month {
public final static Month JANUARY = new Month();
public final static Month FEBRUARY = new Month();
...
}
enum 열거체이름 {상수이름, 상수이름, ...}
enum Num {ONE, TWO, THREE}
public class Main {
public static void main(String[] args) {
Num n = Num.ONE;
switch (n) {
case ONE:
System.out.println("하나!");
break;
case TWO:
System.out.println("둘!");
break;
case THREE:
System.out.println("셋!");
break;
}
}
}
// 출력
ONE
enum Num {
ONE("하나"),
TWO("둘"),
THREE("셋");
private String krNum;
private Num() {}
private Num(String krNum) {
this.krNum = krNum;
}
public String getKrNum() {
return krNum;
}
}
public class Main {
public static void main(String[] args) {
System.out.println(Num.ONE.getKrNum())
}
}
// 출력
하나
열거체의 모든 상수를 저장한 배열을 생성해 반환한다
enum Num {ONE, TWO, THREE}
public class Main {
public static void main(String[] args) {
Num[] arr = Num.values();
for (Num n : arr)
System.out.println(n);
}
}
// 출력
ONE
TWO
THREE
전달된 문자열과 일치하는 해당 열거체의 상수를 반환한다
enum Num {ONE, TWO, THREE}
public class Main {
public static void main(String[] args) {
Num n = Num.valueOf("TWO");
System.out.println(n);
}
}
// 출력
TWO
https://www.nextree.co.kr/p11686/
http://tcpschool.com/java/java_api_enum