Enum(열거형)은 프로그래밍 언어의 데이터 유형 중 하나로, 고정된 상수 값 목록을 정의하는 데 사용됩니다. Enumerations의 각 값은 유한한 집합 중 하나를 나타냅니다.
자바를 예로 들어보겠습니다. Java에서 enum은 다음과 같이 정의됩니다:
enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
이렇게 정의된 열거형 Day는 주에 대한 일주일의 요일을 나타내며, 각 요일은 고유한 이름으로 정의됩니다.
Enum의 주요 특징은 다음과 같습니다:
고정된 상수 집합: Enum의 값들은 컴파일 시에 이미 알려진, 변경 불가능한 상수입니다. 따라서 enum을 사용하면 상수 값이 잘못 설정되거나 변경되는 경우에 대한 보장을 얻을 수 있습니다.
열거형 상수: Enum의 각 값은 열거형 상수이며, 변수처럼 사용할 수 있습니다.
타입 안전성: Enum은 열거된 값들만 허용하므로 타입 안전성을 제공합니다. 이는 잘못된 유형의 값을 입력하는 실수를 방지합니다.
코드 가독성 향상: Enum은 상수 값의 집합을 의미적으로 그룹화하므로 코드를 읽고 이해하기 쉽게 만듭니다.
Enum은 주로 상태, 옵션, 카테고리, 명시적 상수 값 목록 등을 정의할 때 사용됩니다. Java의 enum 외에도 다른 프로그래밍 언어에서도 비슷한 개념을 사용하며, 각 언어에서의 구현 방식은 조금씩 다를 수 있습니다.
package com.example.stb;
import lombok.Getter;
@Getter
public enum UserRole {
ADMIN("ROLE_ADMIN"),
USER("ROLE_USER");
UserRole(String value) {
this.value = value;
}
private String value;
}
이 코드는 Java에서 사용되는 Enum(열거형)을 정의하고 있습니다. 이 Enum의 이름은 UserRole이며, 사용자 역할(사용자 권한)을 나타내는 상수 값을 정의합니다. 일반적으로 이러한 역할은 보안 및 권한 관리에서 사용됩니다.
UserRole Enum은 두 개의 상수를 가지고 있습니다:
ADMIN: 이 열거 상수는 "ROLE_ADMIN" 값을 가지며, 관리자 역할을 나타냅니다.
USER: 이 열거 상수는 "ROLE_USER" 값을 가지며, 일반 사용자 역할을 나타냅니다.
각 Enum 상수는 자체 고유한 value라고 하는 문자열 값을 가집니다. 이 value는 해당 역할을 나타내는 문자열입니다. 이렇게 함으로써 코드에서 역할을 사용할 때 문자열을 직접 작성하는 대신 UserRole.ADMIN 또는 UserRole.USER와 같이 Enum 상수를 사용하여 가독성을 향상시킬 수 있습니다.
주로 이러한 Enum은 보안 및 권한 관리 시스템에서 사용되며, 사용자의 역할을 구분하고 해당 역할에 따라 액세스 권한을 부여하는 데 사용됩니다. Enum을 사용하면 코드에서 역할을 일관되게 사용할 수 있으며, 오타나 오류를 줄일 수 있습니다.