enum은 열거형 상수로서, 데이터가 몇 개의 한정된 상수값으로 구성될 때 주로 사용됩니다. 이전에는 public static final로 지정된 일반적인 상수를 사용하였으나, JDK 1.5 버전부터 enum을 사용할 수 있게 되었습니다. enum을 이용하면 반드시 정의된 값만 사용하도록 설정할 수 있으며, 만약 잘못된 값을 설정할 경우 컴파일 시 에러가 발생하여 개발 단계에서 문제점을 곧바로 찾을 수 있게 됩니다.
enum 은 다음과 같이 생성하고 사용할 수 있습니다. 열거한 상수값에는 0번부터 자동으로 인덱스값이 부여됩니다.
public enum 타입 {상수값1, 상수값2, 상수값3};
타입 변수명 = 타입.상수값;
다음은 enum의 대표적인 메소드입니다.
메소드 | 설명 |
name() | enum 상수의 이름을 String으로 반환 |
ordinal() | 0부터 시작하는 enum 상수의 인덱스값 반환 |
values() | enum 상수값을 배열로 반환 |
예를 들어, 색상을 blue, red, yellow 세 가지만 사용 가능하도록 설정하고자 합니다. 우선 다음과 같이 일반적인 상수를 선언하고 조건문을 만들어 볼 수 있습니다. chekc() 함수로 전달된 값이 blue, red, yellow, 혹은 그 외의 값인지 검사하고 있습니다.
public class EnumTest1 {
public static final String BLUE = "BLUE";
public static final String RED = "RED";
public static final String YELLOW = "YELLOW";
public static void check(String color) {
switch (color) {
case BLUE: System.out.println("BLUE");break;
case RED: System.out.println("RED");break;
case YELLOW: System.out.println("YELLOW");break;
default: System.out.println("default");break;
}
}
public static void main(String[] args) {
check(BLUE);
check(RED);
check(YELLOW);
check("PINK");
}
}
하지만 이렇게 하면 blue, red, yellow 각각에 맞는 문장을 실행할 수는 있어도, blue, red, yellow가 아닌 다른 색상이 넘어오는 것 자체를 막을 수는 없습니다. 이때 필요한 것이 enum 입니다.
이번에는 Color 데이터 타입으로 열거형 상수를 생성하고, 메인함수에서 각 상수값에 접근해 보고 있습니다. values() 함수를 이용해 열거된 상수값 정보를 배열로 반환받아 각 데이터를 출력해 보고 있습니다.
public class EnumTest2 {
public enum Color {BLUE, RED, YELLOW}
public static void main(String[] args) {
Color c = Color.BLUE;
Color c2 = Color.RED;
Color c3 = Color.YELLOW;
System.out.println(c);
System.out.println(c2);
System.out.println(c3);
Color [] colors = Color.values(); //배열로 반환한걸 배열로 저장
for (Color color : colors) {
System.out.println(color.name()+"\t"+color.ordinal());
}
}
}
이제 이를 이용해 세 가지 색상이 아닌 색상값을 사용시 컴파일 에러가 발생하게 만들 수 있습니다.
public class EnumTest3 {
public enum Color {BLUE, RED, YELLOW}
public static void check(Color color) {
switch (color) {
case BLUE: System.out.println("BLUE");break;
case RED: System.out.println("RED");break;
case YELLOW: System.out.println("YELLOW");break;
default: System.out.println("default");break;
}
}
public static void main(String[] args) {
check(Color.BLUE);
check(Color.RED);
check(Color.YELLOW);
// check("PINK"); //컴파일 에러
}
}
check() 함수의 매개변수 타입을 열거데이터형으로 설정함으로써 열거 타입에 정의된 값이 아니면 인자로 받을 수 없게 설정하였습니다. 정의된 값이 아닌 다른 색상을 사용하려고 하면 컴파일 에러가 발생하게 됩니다.
이상으로 enum에 대한 기본적인 내용을 정리해 보았습니다.
'JAVA' 카테고리의 다른 글
[JAVA] 예외 발생시키기, 사용자 정의 예외 클래스 (0) | 2022.06.01 |
---|---|
[JAVA] 예외 처리 (Exception Handling) (0) | 2022.05.31 |
[JAVA] Scanner (스캐너) 클래스 (0) | 2022.05.29 |
[JAVA] Calendar, SimpleDateFormat 클래스 (0) | 2022.05.29 |
[JAVA] Wrapper (래퍼) 클래스 (0) | 2022.05.29 |
댓글