IT 개발 라이프/Back_End

자바(Java) Enum 이란?

10Biliion 2024. 12. 5. 12:52

Java를 배우면서 만나는 중요한 기능 중 하나가 바로 Enum입니다. Enum은 일정한 상수 집합을 정의하고, 이를 코드에서 쉽게 사용할 수 있도록 해주는 Java의 특별한 데이터 타입입니다. 이 글에서는 Enum의 기본 개념부터 고급 사용법까지 예제를 통해 자세히 알아보겠습니다. 😊


Enum이란? ✨

Enum열거형이라는 뜻으로, 일정한 상수 집합을 정의할 때 사용됩니다. 일반적으로 프로그램에서 상수를 사용할 때, 숫자나 문자열을 직접 사용하면 가독성이 떨어지고 오류를 유발할 가능성이 높습니다. Enum을 사용하면 이러한 문제를 해결할 수 있습니다.

예를 들어, 요일을 표현하는 코드를 작성한다고 가정해 봅시다.

Enum 없이 작성한 코드

public class Main {
    public static void main(String[] args) {
        int MONDAY = 1;
        int TUESDAY = 2;
        int WEDNESDAY = 3;

        int today = MONDAY;

        if (today == MONDAY) {
            System.out.println("오늘은 월요일입니다.");
        }
    }
}

위 코드는 작동하긴 하지만 숫자로 요일을 표현하기 때문에 가독성이 떨어지고, 실수할 가능성도 큽니다. 이를 Enum으로 개선해 보겠습니다.

Enum을 사용한 코드

public class Main {
    enum Day {
        MONDAY, TUESDAY, WEDNESDAY;
    }

    public static void main(String[] args) {
        Day today = Day.MONDAY;

        if (today == Day.MONDAY) {
            System.out.println("오늘은 월요일입니다.");
        }
    }
}

이처럼 Enum을 사용하면 코드가 훨씬 더 읽기 쉽고 안전해집니다. 🚀


Enum의 주요 특징 ✅

  1. 상수 집합 정의
    • Enum은 고정된 상수 집합을 정의합니다. 이를 통해 예측 가능한 값을 사용할 수 있습니다.
  2. 타입 안전성
    • Enum은 특정 값만 가질 수 있도록 제한되어 있어 타입 안전성을 제공합니다.
  3. 내부적으로 클래스
    • Enum은 내부적으로 Java 클래스입니다. 따라서 생성자, 필드, 메서드를 가질 수 있습니다.

Enum 사용법 🚀

1. 생성자와 필드 추가하기

Enum은 생성자와 필드를 사용할 수 있어 더욱 강력한 기능을 제공합니다. 다음 예제를 통해 알아보겠습니다.

public class Main {
    enum Day {
        MONDAY("월"), TUESDAY("화"), WEDNESDAY("수");

        private final String korean;

        Day(String korean) {
            this.korean = korean;
        }

        public String getKorean() {
            return korean;
        }
    }

    public static void main(String[] args) {
        Day today = Day.MONDAY;
        System.out.println("오늘은 " + today.getKorean() + "요일입니다.");
    }
}

2. 메서드 오버라이딩

Enum에서 메서드를 오버라이딩하여 각 상수에 대해 다른 동작을 정의할 수도 있습니다.

public class Main {
    enum Operation {
        PLUS {
            @Override
            public int apply(int x, int y) {
                return x + y;
            }
        },
        MINUS {
            @Override
            public int apply(int x, int y) {
                return x - y;
            }
        };

        public abstract int apply(int x, int y);
    }

    public static void main(String[] args) {
        int result = Operation.PLUS.apply(5, 3);
        System.out.println("5 + 3 = " + result);
    }
}

Enum을 사용해야 하는 이유 🌟

  1. 가독성: 상수를 사용하는 코드보다 훨씬 직관적이고 읽기 쉽습니다.
  2. 유지보수성: Enum 값이 변경되더라도 코드 전반에서 쉽게 관리할 수 있습니다.
  3. 안정성: 잘못된 값을 사용할 가능성을 원천 차단합니다.

마무리 🎉

Java Enum은 단순한 상수 집합을 넘어, 강력하고 유연한 기능을 제공합니다. 기본적인 사용법에서부터 생성자와 메서드를 활용한 고급 기능까지, Enum을 잘 활용하면 코드의 품질과 유지보수성을 크게 향상시킬 수 있습니다. 👍