Enum class란?

현재 자바 고급스터디를 진행하고 있기 때문에 Enum class에 관해서는 간단하게 알아보도록하자.

public enum Brand {
    SKT("에스케이"),LG("엘쥐"), KT("케이티");
    private final String value;

    Brand(String value){
        this.value = value;
    }

    public String getValue() {
        return value;
    }
}

위와 같이 enum class 를 만들수 있는데 우리가 평소에 선언해서 사용하던 class 를 만드는 법과 거의 유사하지만 조금의 차이점이 존재한다.

우선 열거형 클래스를 사용하는 이유는 평소 특정 상태나 음계처럼 자주 사용되는 표시가 필요할 때 이를 상수로 선언하여서 사용할 때가 많다.

음계에 대해서 클래스를 작성해보자.

public class Scale {
    public static final int DO = 0;
    public static final int RE = 1;
    public static final int MI = 2;
    public static final int FA = 3;
    public static final int SO = 4;
    public static final int LA = 5;
    public static final int SI = 6;
}

이렇게 사용해야했다.

벌써부터 보기 싫어진다.

이와 똑같이 동작하면서 더 많은 기능을 제공해주는 것이 enum class 이다.

//same or more operation 
public enum Scale {
    DO, RE, MI, FA, SO, LA, SI;
}

enum의 간단한 메소드를 코드를 통해서 가볍게 살펴보자. 아까전에 있었던 Brand class 와 같이 보면

import java.util.Arrays;

public enum Brand {
    SKT("에스케이"),LG("엘쥐"), KT("케이티");
    private final String value;

    Brand(String value){
        this.value = value;
    }

    public String getValue() {
        return value;
    }

    public static void main(String[] args) {
        Brand[] brands = Brand.values();

        System.out.println(Arrays.toString(brands));
        for(Brand brand : Brand.values()){
            System.out.println(brand.name() + "/"
                    + brand.getValue() + "/"
                    + brand.ordinal() + "/"
                    + brand.getDeclaringClass() );
        }
    }
}