Java/Java

열거형 (Enum)

마손리 2023. 3. 6. 23:56

열거형(Enum)

열거형은 서로 연관된 상수들의 집합이다.

 

기본 예시)

enum Seasons {SPRING, SUMMER, FALL, WINTER}
//enum 열거형이름 {상수명1, 상수명2....}

Seasons.SPRING 
// 열거형이름.상수명 -  상수에 접근

열거형으로 정의된 상수마다 첫 상수에 정수값 0이 할당되며 순서대로 다음 정수값이 할당된다.

 

 

열거형 메서드

리턴
타입
메서드 설명
String name() 열거 객체가 가지고 있는 문자열을 리턴하며, 리턴되는 문자열은 열거타입을 정의할 때 사용한 상수 이름과 동일합니다.
int ordinal() 열거 객체의 순번(0부터 시작)을 리턴합니다.
int compareTo(비교값) 주어진 매개값과 비교해서 순번 차이를 리턴합니다.
열거
타입
valueOf(String name) 주어진 문자열의 열거 객체를 리턴합니다.
열거
배열
values() 모든 열거 객체들을 배열로 리턴합니다.

 

 

열거형 메서드와 스위치문등 사용 예시)

class Enums{
    enum Season {SPRING,SUMMER,AUTUMN,WINTER}; // 자바11에서는 열거타입을 전역변수로만 선언이 가능하다
    
    public Enums() {
        // 상수들을 배열에 옴긴뒤 for문 실행
        Season[] seasons = Season.values();
        for(Season value : seasons){
            System.out.printf("%s = %d \n",value.name(),value.ordinal()); //열거형 객체의 메서드
        }

        //열거형을 이용한 switch문
        switch (Season.SUMMER) {
            case SPRING:
                System.out.println("봄");
                break;
            case SUMMER: System.out.println("여름");
                break;
            case AUTUMN: System.out.println("가을");
                break;
            case WINTER: System.out.println("겨울");
                break;
        }
    }
}

switch문의 경우 enum을 이용하면 바로 사용이 가능하지만 for문의 경우 상수들을 배열에 옴겨준뒤 사용이 가능하다.