열거 타입(Enum) 사용법 [Java/자바]-

자바 열거형 Enum, 오늘은 이번에 보실 내용은 자바5로 추가된 열거형 Enum입니다.

열거형 Enum은 “의미가 부여된 이름”을 가진 “정수” 선언을 목적으로 합니다.

Enum의 특징은 다음과 같습니다.●클래스처럼 보이는 정수 ●관련된 정수를 모아 심벌릭한 명칭 집합으로 정의 ●Enum클래스형을 기반으로 한 클래스형 선언 ●새로운 열거형(Enum)을 선언하면 Enum클래스형 베이스의 새로운 클래스형이 만들어진다.

Enum의 장점은 다음과 같습니다.● 코드가 단순해져, 가독성이 뛰어납니다.● 인스턴스의 생성 및 상속을 방지하며 지정수치의 유형 안정성이 보증됩니다.● Enum Class 를 사용하여 새로운 상수의 유형을 정의함으로써 유형 이외의 유형의 데이터 값을 컴파일 시 체크합니다.● 키워드 Enum을 사용하기 때문에 구현의도가 열거형임을 명백히 알 수 있습니다.(= 가독성)

■ 인터페이스 기반 정수 정의 열거형을 공부하기 전에 이전에 어떤 방식으로 사용되었으며 어떤 문제점이 있었는지 살펴봅시다!

인터페이스 내에 선언된 변수는 public, static, final이 선언된 것으로 간주합니다.그러므로 스케일 인터페이스 정의에 의해 총 7개의 정수가 정의되어 있습니다.인터페이스 Scale에는 ‘음계’를 표현한 정수를 포함하고 있습니다. 여기서 중요한 점은 상수의 이름인데 상수의 값이 바뀌어도 이름이 바뀌지 않으면 코드에 아무런 영향을 주지 않습니다.스위치 문을 통해 상수값이 아닌 상수 이름으로 분기를 처리하였기 때문입니다.

위와 같은 방식이 자바5 이전에 사용하던 방식인데 여기서는 문제점이 하나 있습니다.다음 예시를 통해 문제점이 무엇인지 살펴보겠습니다.

위의 예제에서는 다음과 같은 두 개의 인터페이스가 존재합니다.상기 인터페이스에서 DOG와 MAN은 정수값이 1이고, CAT와 WOMAN의 정수값은 2입니다.위와 같이 선언했을 경우, 다음의 문장에서 문제가 발생할 수 있습니다.Person.MAN도 값이 1이고 Animal.DOG의 값도 1이기 때문에 위와 같은 실수를 해도 컴파일 에러는 물론 실행 에러도 발생하지 않습니다.

■ 자료형 부여를 돕는 열거형위와 같은 문제점을 해결하기 위해 자바5에서 열거형 Enum이 소개되었는데 열거형 Enum 다음과 같이 정의합니다.위와 같이 Enum을 정의하여 아래와 같이 호출하여 사용할 수 있습니다.결과값은 각각 DO, DOG가 됩니다.

전술한 인터페이스 기반의 정수 정의에서 발생한 문제점을 감안하여 열거형 Enum을 살펴보겠습니다.

기존 코드와는 달리 A nimal을 인쇄하면 컴파일 오류가 발생합니다.Person형 값을 전달해야 하는 상황에서 Animal형 값이 전달되어 컴파일 오류가 발생합니다.그리고 이것은 먼저 문제라고 지적한 부분이 해결되었음을 의미합니다.

■ 클래스 내에 정의가 가능한 열거형 클래스 내에 클래스 정의를 할 수 있도록 클래스 내에 열거형 정의도 가능합니다.

열거형 Enum에 대한 설명은 여기까지고요, 다음은 Enum의 다양한 예제를 통해서 자세히 살펴보도록 하겠습니다.

References https://limkydev.tistory.com/66

http://www.yes24.com/Cooperate/Naver/welcomeNaver.aspx?pageNo=1&goodsNo=43755519

error: Content is protected !!