꾸준한 스터디
Published 2023. 1. 4. 18:15
열거 타입 (Enum) Effective Java/키워드

변하지 않는 상수의 집합 클래스

보통 성별이나, 월, 요일 같은 경우 변하지 않는 데이터들을 전역변수 처럼 1개의 인스턴스로 사용하기도 하는데

public class Month {
	public static final String MAY = "5월";
}

public class App {
	public static void main(String[] args){
    	System.out.println(Month.MAY);
    }
}

클래스 변수로 선언을 하면 외부 패키지에서도 전역변수처럼 사용했지만 enum 클래스로 더 편리하게 관리할 수 있다.

enum 클래스는 메모리 메소드 영역에 올라가면 클래스로더가 클래스를 파싱하면서 각 상수가 싱글톤으로 힙 영역에 생성 된다.

public enum Month{

    // 각 상수는 클래스라고 생각하고 () 괄호 안은 해당 클래스의 필드를 선언	
    JANUARY("1월"),
    FABRUARY("2월"),
    MARCH("3월"),
    APRIL("4월"),
    MAY("5월"),
    JUNE("6월"),
    JULY("7월"),
    AUGUST("8월"),
    SEPTEMBER("9월"),
    OCTOBER("10월"),
    NOVEMBER("11월"),
    DECEMBER("12월");

    public String korean;

    Month(String korean) {
    	this.korean = korean;
    }
        
}

해당 열거타입들은 컴파일시 java.lang.Enum 클래스를 상속받아 해당 API들을 사용할 수 있다.

public class EnumApp {
	
    public static void main(String[] args) {

        System.out.println(Month.APRIL.korean); // 4월

        Month month = Month.APRIL;

        // name() 열거 객체가 가지고 있는 문자열 반환
        System.out.println(month.name()); // APRIL

        // ordinal() 열거 객체 순번 0부터 시작
        System.out.println(month.ordinal()); // 3

        // compareTo() 두 열거 객체간 순번 비교 차이 반환
        System.out.println(month.JANUARY.compareTo(month.AUGUST)); // -7

        // valueOf 상수명 문자열의 동일 열거객체 반환 정적 팩터리 메서드
        Month samwal = month.valueOf("MARCH");
        System.out.println(samwal); // MARCH

        // values() 열거객체 순번대로 배열로 만듬
        Month[] mon = Month.values();

        for(Month mont : mon) {
            System.out.println(mont);
        }
        
    }// end of main
    
}

 

참고자료

https://kephilab.tistory.com/38

 

8. Java 자바 참조 타입 - 열거 타입

열거 : 한정된 값만을 갖는 데이터 타입으로 몇 개의 열거 상수 중에서 하나의 상수를 저장하는 데이터 타입이다. 열거 예) 요일(열거 타입 이름) : 월, 화, 수, 목, 금, 토, 일 (열거 상수) 계절(열

kephilab.tistory.com

https://hudi.blog/java-enum/

 

[Java] 열거 타입 (Enum)

학습 동기 우아한테크코스 레벨1 로또 미션의 필수 요구 사항 중 하나가 Java Enum 을 활용하여 개발하는 것 이었다. 'Enum 은 그냥 비슷한 상수를 한 파일에서 관리하게 해주는 문법 아닌가?' 정도로

hudi.blog

 

profile

꾸준한 스터디

@StudyRecord

포스팅이 유익하셨다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!