프로그래밍언어/Java
타입에 안전한 열거형 enum
D.Y
2016. 3. 3. 12:48
반응형
오늘은 jdk 1.5에서 추가된 enum에 대해 알아보겠습니다.
enum의 정의
- 배열 : 서로 연관된 값들의 집합
- 열거형(enumerated type) : 서로 연관된 상수들의 집합
enum의 특징
- 코드가 단순해진다.
- 인스턴스 생성과 상속을 방지한다.
- enum 객체를 new를 통해 인스턴스를 생성을 막아주고, 생성자의 접근제어자를 private으로 설정 하지 않을 시 컴파일 에러가 발생한다. - 의미를 명확히 할 수 있다.
- class 대신 enum을 사용함으로써 구현 의도를 명확히 나타낸다. - 자바의 enum은 C언어의 열거형보다 더 향상된 개념의 열거형으로 값뿐만 아니라 타입까지 관리하기 때문에 컴파일시 오류를 줄일 수 있다.
- 아래의 School.MIDDLE 값과 Level.SILVER 를 비교할 경우 값은 같은 2이지만 타입이 다르므로 컴파일시 컴파일 에러를 나타낸다.
enum Level
{
BASIC(1), SILVER(2), GOLD(3)
}
- 또한, School.valueOf()메소드 사용시,1,2,3 이외의 값 사용시 에러처리를 할 수 있다.
enum 샘플코드
public enum School
{
ELEMENTARY(1), MIDDLE(2), HIGH(3); // 3개의 enum 오브젝트 정의 (초,중,고)
private final int value;
School(int value) //DB에 저장할 값을 넣어줄 생산자를 만들어 둔다.
{
this.value = value;
}
public int intValue()
{
return value;
}
public static School valueOf(int value) //매개변수로 들어오는 int값에 따라 학년(?)값 반환
{
switch(value)
{
case 1 : return ELEMENTARY;
case 2 : return MIDDLE;
case 3 : return HIGH;
default : throw new AssertionError("Unknown value : " + value);
}
}
}
모두 즐거운 코딩 하세요~
반응형