본문 바로가기
Spec UP - Backend/나도코딩의 자바기본편

Chap_07. 열거형(Enum)

by TIS_Ha 2023. 5. 3.
반응형

특수한 형태의 클래스인 열거형에 대해 알아보자.

열거형 (Enum) : 상수들의 묶음으로 아래와 같은 예시들을 열거형으로 만들 수 있다.

  • 1월~12월 달력을 볼 때 고정된 값 : JAN, FEB, MAR ...
  • 옷사이즈 : S, M, L, XL
  • OS 종류 : WIN10, WIN11, MACOS, LINUX ...
  • 해상도 : HD, FHD, QHD, UHD
enum Resolution {
    HD, FHD, UHD
}

enum 열거형이름 { 열거형의 값 나열 }

Resolution이라는 열거형은 HD,FHD,UHD라는 세개의 값을 가진다.

- 보통 열거형의 값들은 대문자로 정의한다.

열거형 데이터의 값을 가져올때에는 열거형이름.값 의 형태로 가져온다. (Resolution.HD)

아래와 같이 switch 문을 통하여 열거형 값에 따라 다른 결과를 출력하도록 설정할 수도 있다.

혹은 아래와 같이 문자열 값을 전달받아 열거형데이터 값을 지정하는 방법도 있다.

resolution = Resolution.valueOf("UHD");
System.out.println(resolution);

해당 열거형 데이터가 가지고있는 전체 데이터와 인덱스를 출력해보았다.

for문을 통하여 열거형 Resolution.values() 값이 있는만큼 반복하여 열거형 데이터의 이름과 순번을 출력하였다.

- myRes.name() + myRes.ordinal();

 


이번에는 열거형의 상수가 내포하고 있는 값이 필요한 경우에 대해 학습해보자. (Ex. JAN : 1 )

각 해상도의 사이즈가 지정되어있다고 가정해보자. (Ex. HD -> 1280 width)

enum Resolution {
    HD(1280), FHD(1920), UHD(3840);

    private final int width;
    Resolution(int width){
        this.width = width;
    }

    public int getWidth(){
        return width;
    }
}

열거형 Resolution에서 int width 값을 추가하고 Getter getWidth()를 통해 값을 받아오도록 하였다.

- HD width : 1280, FHD width :1920, UHD width : 3840

myRes.getWidth() 메소드를 호출하면 아래와 같이 값이 출력된다.

 

반응형

댓글