Java 강의 - enum [ 즐거운 자바 강좌 ]

·2023년 8월 14일

java 공부

목록 보기
13/13
post-thumbnail

Enum

-> Enumeration의 약자로 JDK 5부터 지원하는 기능이다.

🏁 Enum 사용하기

  • 클래스를 생성하는 것과 같은 방식으로 Enum을 생성한다.
  • com.example.enumtype 패키지를 생성한다.
  • 생성된 패키지 아래에 Day enum을 생성한다.
public enum Day {
    SUNDAY,
    MONDAY,
    TUSEDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY
}
  • Day 안에 상수를 나타내는 값을 적는다. 보통 모두 대문자로 표현을 하는데, 상수와 상수는 컴마로 구분한다.
    < today class >
public class Today {
    private Day day;

    public Day getDay() {
        return day;
    }

    public void setDay(Day day) {
        this.day = day;
    }
}
today.setDay(Day.SUNDAY);
  • today의 setDay()메소드에는 Enum타입인 Day가 전달되야 한다.
  • 이경우 정수로 선언된 상수와 다르게 Day안에 선언된 상수만 값으로 전달할 수 있다.
    즉, 타입에 안전하다(Type-Safety)

🏁 Enum 타입의 특징

  • Enum은 타입에 대해 안전하다. 미리 정의된 Enum 변수 안의 상수만을 대입할 수 있다.
  • Enum은 switch 문에서 사용 가능하다.
  • Enum은 switch 문에서 사용 가능하다. (JDK 7 이상부터는 switch문에서 String도 사용 가능하다.)
public static void main(String[] args) {
        Day day = Day.MONDAY;

        switch(day) {
            case SUNDAY:
                System.out.println("일요일입니다");
                break;
            case MONDAY:
                System.out.println("월요일입니다");
                break;
            default:
                System.out.println("그 밖의 요일");
        }
    }

→ day가 어떤 상수냐에 따라서 알맞은 case 부분이 실행된다.
→ 이때 조심해야 할 것은 case 다음에는 Day가 가지고 있는 상수의 이름이 나와야 한다는 것이다.
→ case 다음에 Day.SUNDAY 라고 사용하면 컴파일 오류가 발생한다.

  • Enum 생성자와 값을 가질 수 있다. 단 생성자는 private해야한다.
  • Enum의 생성자는 내부에서만 호출 가능하다.
profile
기회를 잡기 위해 준비하자 !

1개의 댓글

comment-user-thumbnail
2023년 8월 14일

잘 봤습니다. 좋은 글 감사합니다.

답글 달기