Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 클래스 내부에 열거형(Enum)을 정의할 수 있을까요?

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의 열거형은 클래스 내부에 정의할 수 있으며, 필요에 따라 변수, 생성자, 메서드를 포함하는 강력한 타입으로 활용할 수 있습니다. 관련된 상수들을 하나의 타입으로 묶어 관리해야 할 때 유용하게 사용됩니다.