1 minute read

📖 열거형 (enumeration)

서로 관련있는 상수들을 모아서 대표 이름으로 클래스를 정의하고 활용하는데 사용한다.
요소, 멤버라 불리는 명명된 값의 집합을 이루는 자료형으로, 상수그룹을 나타내는 특수한 클래스이다.
class, interface 대신 enum 키워드를 사용하고, 상수를 쉼표로 구분한다.
다음과 같이 일반적으로 선언할 수 있다.

enum School {
  ELEMENTARY,
  MIDDLE,
  HIGH
}

Enum 을 잘 사용하면 코드의 가독성을 높이고 논리적인 오류를 줄일 수 있다.


🍄 enum 사용 이유

public class noEnum{
  public static final int APPLE = 1;
  public static final int BANANA = 2;
  public static final int PEAR = 3;
}

위의 코드에서 상수들을 논리적으로 구분하기 위해서 아무 관련도 없는 숫자들인 1, 2, 3을 지정해 주었다.
하지만 이러한 방식은 다른 곳에서 똑같은 방식으로 상수를 지정해 주었을 때, 중복으로 인한 오류가 발생할 수 있다.


🍄 enum 메서드

image


🍄 java.lang.Enum

java.lang에 포함된 Enum 클래스는 모든 자바 열거형의 조상이다.
모든 열거형은 Enum 클래스를 상속받기 때문에 enum type은 별도의 상속을 받는 것이 불가능하다.

public abstract class Enum<E extends Enum<E>>
        implements Constable, Comparable<E>, Serializable {

    private final String name;

    private final String name() {
        return name;
    }

    ......
}


🍄 EnumSet

EnumSet은 java.util 패키지에서 제공하는 enum 클래스와 함께 동작하는 구현체이다.

  • enum 값만 포함할 수 있고, 모든 값은 동일한 enum 에 속해야 함
  • null 값을 추가하는 것을 허용하지 않으며, 시도하면 NullPointerException 이 발생
  • thread 로부터 안전하지 않으므로, 필요한 경우 외부에서 동기화해야 함
  • HashSet 보다 훨씬 빠른 고성능 구현체
  • iterator 를 사용한 복제에서, fail-safe 하므로 컬렉션을 반복하면서 컬렉션이 수정될 때 ConcurrentModificationException 이 발생하지 않음
  • Enumset 의 모든 메서드는 산술 비트 연산자를 이용하여 구현



개인 공부 기록용 블로그입니다.
틀리거나 오류가 있을 경우 제보해주시면 감사하겠습니다.😁