[java] 열거형

이동엽·2023년 1월 6일
0

Enum

우리가 보통 상수를 쓸때 final을 쓰고
여러개 상수를 정의할때

public static final ## ### =;

이렇게 썻지만 상수명이 겹치는 경우가 있다.
여러개 쓰면 코드도 길어진다.

그래서 enum을 쓰면

enum Seasons { SPRING, SUMMER, FALL, WINTER }
enum Frameworks { DJANGO, SPRING, NEST, EXPRESS }

이렇게 상수명이 겹쳐도 되고, switch 문도 쓸수 있고
코드를 단순하고 가독성 좋게 만들수 있다.

enum Seasons {
SPRING, //정수 값 0할당
SUMMER,//정수 값 1할당
FALL,//정수 값 2할당
WINTER}//정수 값 3할당

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;
        }
    }
}

이렇게 편리하게 관리할수 있고, 중복도 피하며 타입에 대한 안정성을 보장한다.

Enum 메소드

리턴타입메소드설명
Stringname()열거 객체에 있는 문자열을 리턴, 문자열은 열거 타입 정의 할때 사용한 상수 이름과 동일하다
intordnal()열거 객체의 순번을 리턴
intcompareTo(비교값)주어진 매개값과 비교해서 순번 차이를 리턴한다.
열거 타입valueOf(String name)주어진 문자열의 열거 객체를 리턴한다.
열거 배열values()모든 열거 객체들을 배열로 리턴한다.

예제

enum Level {
  LOW, // 0
  MEDIUM, // 1
  HIGH // 2
}

public class Test {
    public static void main(String[] args) {
        Level level = Level.MEDIUM;

        Level[] allLevels = Level.values();
        for(Level x : allLevels) {
            System.out.printf("%s=%d%n", x.name(), x.ordinal());
        }

        Level findLevel = Level.valueOf("LOW");
        System.out.println(findLevel);
        System.out.println(Level.LOW == Level.valueOf("LOW"));

        switch(level) {
            case LOW:
                System.out.println("낮은 레벨");
                break;
            case MEDIUM:
                System.out.println("중간 레벨");
                break;
            case HIGH:
                System.out.println("높은 레벨");
                break;
        }
    }
}
//출력값
LOW=0
MEDIUM=1
HIGH=2
LOW
true
중간 레벨
profile
씨앗

0개의 댓글