Java에서 열거형(Enumeration, Enum)은 이름이 지정된 상수들의 집합을 나타냅니다. 열거형은 다음과 같은 문법으로 생성할 수 있습니다.
enum Days {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}네, Java에서는 클래스 내부에 열거형을 정의할 수 있습니다. 또한 values() 메서드를 사용하면 열거형에 포함된 모든 상수 값을 배열 형태로 가져올 수 있습니다.
예제 1: 클래스 내부에 열거형 정의하기
public class EnumerationExample {
enum Enum {
Mango, Banana, Orange, Grapes, Thursday, Apple
}
public static void main(String args[]) {
Enum constants[] = Enum.values();
System.out.println("Value of constants: ");
for(Enum d: constants) {
System.out.println(d);
}
}
}실행 결과
Value of constants: Mango Banana Orange Grapes Thursday Apple
위 예제에서 볼 수 있듯이, EnumerationExample 클래스 내부에 Enum이라는 열거형을 선언하고, values() 메서드로 상수들을 순회하며 출력했습니다.
예제 2: 변수와 메서드를 가진 열거형
Java의 열거형은 단순한 상수 목록을 넘어 인스턴스 변수, 생성자, 메서드까지 가질 수 있습니다.
enum Vehicles {
//열거형 상수 선언
ACTIVA125, ACTIVA5G, ACCESS125, VESPA, TVSJUPITER;
int i; //인스턴스 변수
Vehicles() { //생성자
}
public void enumMethod() { //메서드
System.out.println("Current value: "+Vehicles.this);
}
}
public class Sam{
public static void main(String args[]) {
Vehicles vehicles[] = Vehicles.values();
for(Vehicles veh: vehicles) {
System.out.println(veh);
}
vehicles[3].enumMethod();
}
}실행 결과
ACTIVA125 ACTIVA5G ACCESS125 VESPA TVSJUPITER Current value: VESPA
이 예제에서는 Vehicles 열거형이 인스턴스 변수 i, 생성자, 그리고 enumMethod() 메서드를 함께 정의하고 있습니다. 실행 결과를 보면 values()로 모든 상수를 출력한 뒤, 배열의 네 번째 요소인 VESPA에 대해 메서드를 호출하여 해당 상수 값이 출력되는 것을 확인할 수 있습니다.
정리
Java의 열거형은 클래스 내부에 정의할 수 있으며, 필요에 따라 변수, 생성자, 메서드를 포함하는 강력한 타입으로 활용할 수 있습니다. 관련된 상수들을 하나의 타입으로 묶어 관리해야 할 때 유용하게 사용됩니다.