스터디
[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의 적극적인 지원을 받을 수 있다.
- 각자의 이름 공간이 있어서 같은 상수도 공존할 수 있다.
- 새로운 상수를 추가하거나 순서를 바꿔도 다시 컴파일하지 않아도 된다.
- 허용 가능한 값들을 제한할 수 있다.
- 리팩토링시 변경 범위가 최소화된다.
- 데이터들 간의 연관관계를 표현할 수 있다.