Enum

h_hi·2021년 3월 6일
0

java

목록 보기
2/3

Enum

enum 은 열거형(enumerated type) 이라고 부릅니다. 열거형은 서로 연관된 상수들의 집합입니다. enum 은 사실상 class 이며 선언 방법은 아래와 같습니다.

enum Fruit_enum {
    APPLE, GRAPE, BANANA;
}

위의 코드를 기존의 java 코드로 적어보면 아래와 같습니다.

class Fruit {
    public static final Fruit APPLE = new Fruit();
    public static final Fruit GRAPE = new Fruit();
    public static final Fruit BANANA = new Fruit();
    private Fruit(){} // 생성자의 접근 제어자가 private
}

Fruit 클래스에 각각의 인스턴스를 생성하고, 클래스 생성자의 접근 제어자를 private 으로 선언함으로써 인스턴스의 생성과 상속을 방지합니다. 기존에 자주 사용되던 패턴을 단순화 시키고, enum 을 붙여 클래스의 목적이 열거임을 명확히 나타낼 수 있습니다.

Enum 과 생성자

Enum 은 자체가 클래스이므로 생성자, 필드, 메소드를 가질 수 있습니다.

public class EnumTest {
    public static void main(String[] args){
        Fruit_enum fruit = Fruit_enum.APPLE;
        switch (fruit) {
            case APPLE:
                System.out.println("apple " + fruit.getColor());
                break;
            case BANANA:
                System.out.println("banana" + fruit.getColor());
                break;
            case GRAPE:
                System.out.println("grape" + fruit.getColor());
                break;
        }
        
    }
}

enum Fruit_enum {
    APPLE("red"), GRAPE("green"), BANANA("yellow");
    private String color;

    public String getColor() {
        return this.color;
    }

    Fruit_enum(String color) {
        this.color = color;
    }
}

enum 은 열거형이므로 배열처럼 인스턴스들을 몰라도 values 메소드를 이용하여 인스턴스들을 호출할 수 있습니다.

 for (Fruit_enum fruit_enum : Fruit_enum.values()) {
            System.out.println(fruit_enum + " color : " + fruit_enum.getColor());
        }

Reference
생활코딩(상수와 enum)

profile
안드로이드, flutter 개발자

0개의 댓글