[Java] 열거형(enum)

Hyo Kyun Lee·2022년 1월 30일
0

Java

목록 보기
13/61
post-custom-banner

1. 열거형

enum, 서로 연관되어있는 상수들의 집합에 대해 선언할때 사용하는 자료형의 일종이다.
다른 변수들과는 달리 수정하거나 바꿀 수 있는 타입이 아니고, 선언된 값들에 대해 사용(공유)하기만 할 때 활용할 수 있는 자료형이다.

기존 static final로 정의하여 반복적으로 나열하였던 방식에서 한번에 묶어 정의할 수 있는(개선된) 방식으로 상수들을 정의할 수 있게 되었다.

2. 열거형의 선언과 사용

예를 들어, main 함수 내에서 MALE, FEMALE이라는 두개의 문자열만 저장하고자 한다.

  • 기존 static final String 선언을 통한 방법
public static final String MALE = "MALE;
public static final String FEMALE = "FEMALE";

public static void main(String[] args){
	String gender1;
    
    gender1 = class.MALE;
    gender1 = class.FEMALE;
}

이러한 방법으로 main 함수 내에서 gender1 문자열에 MALE, FEMALE 문자열을 저장하였다.
단, 위 방법을 통해서는 문법적인 오류가 없기 때문에 다른 문자열들도 변수에 할당(수정)이 가능하다는 것이 문제이다.

String gender1;

gender1 = "boy";

이렇게 다른 문자열을 넣어줄 수 있다는 측면에서 문제가 생긴다.

  • 개선된 방법, enum 자료형을 통한 선언 방법

개선된 방법은 enum 자료형, 즉 상수들을 하나의 집합으로 사용할 수 있는 자료형을 활용하는 것이다.

먼저 enum 자료형을 선언하고, class를 선언하듯이 정의(상수나열)한다.

enum Gender {
	MALE, FEMALE;
}

이 enum에 선언된 상수들은 그대로 사용할 수 있고, 별도로 수정 및 할당이 불가능하다.
enum은 위와 같이 static final String value이므로, static class 및 함수 내에서 그대로 활용할 수 있다.

public static void main(String[] args){
	Gender gender2; 
   	gender2 = Gender.MALE;
    gender2 = Gender.FEMALE;
}

main 함수 내부에서 enum 자료형에 대해 먼저 변수를 선언하고, 그 후 사용한다.
사용 시 static 변수 사용하듯이 enum.value 형태로 상수를 사용(수정불가).

gender2 = "Boy";

위와 같은 할당은 불가능하다.

3. 참조자료

프로그래머스 강의
https://programmers.co.kr/learn/courses/5/lessons/423

enum
https://www.nextree.co.kr/p11686/

post-custom-banner

0개의 댓글