스터디

[201 Created] 3주차 - 상수를 static final로 관리하는 것과 enum으로 관리하는 것의 차이는 뭘까?

처누 2023. 11. 9. 01:59

Enum이란?

 - Enum은 열거형이라고 하며 관련이 있는 상수들의 집합이다.

 

과거엔?

 과거에는 아래와 같이 상수값들을 메서드 내에서 따로 선언해서 사용했다.

public static final int MONDAY = 1;
public static final int THUESDAY = 2;
public static final int WEDNESDAY = 3;
public static final int THURSDAY = 4;
public static final int FRIDAY = 5;
public static final int SATURDAY = 6;
public static final int SUNDAY = 7;

 

 하지만 이러한 상수 선언은 다음과 같은 문제점을 가진다.

 

  • 타입 안정성을 보장할 수 없다.
  • 자바에서는 NAMESPACE를 제공하지 않기 때문에 표현력이 좋지 못하다.
  • 정수 상수는 문자열로 표현하기가 어렵다. 문자열로 출력하려면 따로 메서드를 만들어야한다.
  • 프로그램이 깨지기 쉽다.

ENUM의 등장

enum Day {
	MONDAY(1)
	THUESDAY(2)
	WEDNESDAY(3)
	THURSDAY(4)
	FRIDAY(5)
	SATURDAY(6)
	SUNDAY(7)
}

 

자바 Enum의 장점은 다음과 같다.

  • 위 코드에서 Day 타입을 매개변수로 받는 메서드를 선언했다면 7개의 값 중 하나임이 확실하고, 다른 타입의 값을 넘기려 하면 컴파일 오류가 발생한다.
  • 문자열과 비교해 IDE의 적극적인 지원을 받을 수 있다.
  • 각자의 이름 공간이 있어서 같은 상수도 공존할 수 있다.
  • 새로운 상수를 추가하거나 순서를 바꿔도 다시 컴파일하지 않아도 된다.
  • 허용 가능한 값들을 제한할 수 있다.
  • 리팩토링시 변경 범위가 최소화된다.
  • 데이터들 간의 연관관계를 표현할 수 있다.