[Java] 6. 1 열거형

출간일 2016년 11월 28일

판매가 2000원

형태 ebook

학습에 도움이 되시면 ebook을 구입하여 소장하시면 감사하겠습니다.

언제나 휴일 출판사의 수익금의 대부분은 아프리카에 기부하고 있습니다.


Java 언어에서는 사용할 수 있는 값의 종류를 미리 정하는 열거형을 제공하고 있습니다. 예를 들어 성별을 표현한다고 할 때 int 형식이나 Boolean 형식 혹은 문자열을 사용하여 표현할 수도 있을 것입니다. 하지만 이는 가독성이나 신뢰성에서 문제를 유발할 수 있습니다.

 

예를 들어 int 형식 변수에 1이라는 값이 들어있을 때는 여성, 2는 남성, 0은 결정하지 않은 값으로 사용하기로 정한다고 가정합시다. 그런데 이 때 개발자의 실수에 의해 해당 변수의 값을 3으로 설정한다면 논리적 버그를 만드는 것입니다.

 

이 때 성별 데이터를 표현하기 위한 열거형을 정의하여 사용하면 논리적 버그를 미연에 방지할 수 있습니다.

 

[접근자] enum 형식명{

    값,…

}

 

다음은 성별 형식을 열거형 Gender로 정의하여 사용한 예제입니다.

실행 결과

위의 예제에서 열거형의 멤버 ordinal() 메서드를 호출하면 몇 번째 나열한 값인지 확인할 수 있습니다. 주의할 점은 맨 앞에 열거한 표현이 0입니다. 그리고 toString 메서드는 열거형에 표현한 값(NoGender, Female, Male)을 문자열로 반환합니다.

 

만약 열거형을 정의할 때 나열하는 표현에 개발자가 원하는 값으로 매핑할 수도 있습니다. 이 때는 열거형에 나열하는 표현을 “표현=(매핑 값)”을 지정하며 접근 지정하지 않은 생성자와 매핑할 값을 기억할 멤버를 캡슐화하여 사용할 수 있습니다. 이 때 멤버 필드 값을 접근할 수 있는 접근자 메서드를 제공하면 사용이 편합니다.

 

[접근자] enum 형식명{

    값(매핑 값),…;

    [final] int 멤버 필드명;

    생성자(int 변수명){

        멤버 필드명 = 변수명;

    }

    [접근자 메서드]

}

 

다음은 게임에 사용할 상수를 열거형에 정의하는 예제입니다.

실행 결과