enum은 고정된 상수들의 집합을 정의할 때 사용한다. 'enum'을 사용하면 관련 있는 상수들을 그룹으로 묶어서 코드의 가독성을 높이고, 오류를 줄일 수 있다.
* 타입 안정성: enum은 자바의 타입 시스템의 일부이므로, 정의한 enum 타입의 변수에는 그 enum의 값만 할당할 수 있습니다. 이는 잘못된 값이 할당되는 것을 컴파일 시점에서 방지합니다.
* 네임스페이스 제공: enum의 각 상수는 enum 이름으로 한정되므로 이름 충돌을 방지합니다.
* 객체 지향적 기능: enum은 메서드와 필드를 가질 수 있으며, 인터페이스를 구현하거나 추상 메서드를 가질 수도 있습니다.
public enum Grade{
BRONZE, SILVER, GOLD
}
위 코드에서 'Grade'라는 'enum'을 정의했고, 이 안에 3개의 등급을 상수로 선언했다.
Grade myGrade = Grade.GOLD;
myGrade 변수는 'Grade', 'enum'에서 선언된 값 중 하나를 가질 수 있다.
'enum'd에 메서드를 추가할 수 있다.
public enum Grade {
BRONZE(1), SILVER(2), GOLD(3);
private final int value;
Grade(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
각 enum 상수는 연관된 int 값을 가진다. 이를 통해 enum 상수에 더 의미를 부여할 수 있다.
switch(myGrade) {
case BRONZE:
// BRONZE 등급에 대한 처리
break;
case SILVER:
// SILVER 등급에 대한 처리
break;
// ... 나머지 경우에 대한 처리
}