Fall in IT.

타입에 안전한 열거형 enum 본문

프로그래밍언어/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);

}

}

}


모두 즐거운 코딩 하세요~




Comments