열거형(Enum)

2riing·2023년 3월 8일

열거형

Enum의 개념과 사용방법

Enum의 개념

열거형(Enum)은 여러 상수들을 편리하게 선언할 수 있도록 해줍니다. 서로 연관된 상수들의 집합이며, 다른 데이터 타입의 값을 저장하려고 하면 컴파일 오류가 발생합니다. 또한 관례적으로 대문자로 작성합니다. enum은 아래와 같이 선언할 수 있습니다.

enum Frameworks { DJANGO, SPRING, NEST, EXPRESS }
enum Direction {
    NORTH,
    EAST,
    SOUTH,
    WEST
}

public class EnumExample {
    public static void main(String[] args) {
        Direction d = Direction.EAST;
        if (d == Direction.EAST) {
            System.out.println("Direction is EAST");
        }
    }
}

위에서 Direction은 NORTH, EAST, SOUTH, WEST라는 상수를 가지고 있으며, Direction.EAST 로 접근할 수 있습니다.

Switch문에서의 사용

enum Seasons {SPRING, SUMMER, FALL, WINTER}

public class Main {
    public static void main(String[] args) {
        Seasons seasons = Seasons.SPRING;
        switch (seasons) {
            case SPRING:
                System.out.println("봄");
                break;
            case SUMMER:
                System.out.println("여름");
                break;
            case FALL:
                System.out.println("가을");
                break;
            case WINTER:
                System.out.println("겨울");
                break;
        }
    }
}

또한, 위와 같이 switch 문에서도 타입의 안정성을 보장합니다.

지원 메소드

열거형은 순회할 수 있으며, enum.name()을 통해 문자열을 리턴합니다. 또한, enum.ordinal()을 사용하여 자동으로 객체의 순번을 리턴할 수 있습니다.

Enum의 장단점

장점

  1. 코드의 가독성과 유지보수성 향상
  2. 타입 안정성 보장
  3. 코드의 안정성과 보안성 향상
  4. 코드의 간결성 향상

사용하지 않는 경우

  1. Java 이전 버전과의 호환성(JDK 1.5부터 도입)
  2. 메모리 사용량이 큰 경우
  3. 상수가 필요하지 않은 경우
  4. 다른 클래스와의 상속관계가 필요한 경우

Enum의 영향

enum은 일반적으로 클래스로 정의되어있기 때문에, 일반 상수에 비해서 프로그램 성능에 영향을 미칠 수 있으나 미미합니다. 그러나 enum을 사용하면 프로젝트의 가독성과 유지보수성을 향상시키기 때문에 이점이 더 큽니다.

관련문서

오라클에서 제공하는 Enum 에 관한 공식문서입니다.
https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

0개의 댓글