인프런 커뮤니티 질문&답변

최은희님의 프로필 이미지
최은희

작성한 질문수

나도코딩의 자바 기본편 - 풀코스 (20시간)

열거형

안녕하세요 열거형에서 이해가 잘 안되는 부분이 잇습니다.

작성

·

243

0

 1. HD, FHD, UHD를 열거 클래스 Resoultion의 열거값이라고 부르면 되나요?

  1. HD(1280), FHD(1920), UHD(3840); 이 코드에서 괄호안에 있는 것들은 뭐라고 부르면 되나요?

  2. 아래 코드에서 width 가 괄호안의 숫자가 될 수 있는 지 이해가 안됩니다 ㅠ. 조금 더 설명해주실 수 있을까요?

enum Resolution {
	 HD(1280), FHD(1920), UHD(3840);
		
		private final int width;
		
		Resolution(int width){
			this.width = width;
		}
		
		public int getWidth() {
			return width;
		}
}

답변 1

1

나도코딩님의 프로필 이미지
나도코딩
지식공유자

안녕하세요?

아래 각 질문에 대해 답변 드립니다.

1) 맞습니다. HD, FHD, UHD 는 열거 클래스 Resolution 의 열거값(= Enumerated Values)이라고 부릅니다. 자바에서 열거(enum) 타입은 여러 상수들을 한 곳에 모아 정의하는 데이터 타입인데요. 열거값들은 해당 열거 클래스에서 정의된 인스턴스들이며, 각각 고유한 상수를 가지고 있을 수 있습니다. 작성해주신 코드에서 Resolution은 열거 클래스이며, HD, FHD, UHD는 해당 열거 클래스의 열거값입니다.

2) 그리고 HD(1280), FHD(1920), UHD(3840) 부분은 각 열거값들의 생성자 호출 시에 전달되는 값입니다. 생성자는 해당 열거값을 생성하면서 값을 초기화하기 위해 사용됩니다. 이 예제에서는 Resolution 열거값들이 width라는 정수 타입의 인스턴스 변수를 가지고 있으며, 생성자에서 인자로 전달된 값을 width에 저장하고 있습니다.

코드가 다음과 같이 작성되어 있다고 가정해볼게요.

public class Main {
    public static void main(String[] args) {
        Resolution resolution = Resolution.FHD;
        System.out.println(resolution.getWidth()); // 출력 결과: 1920
    }
}

enum Resolution {
    HD(1280), FHD(1920), UHD(3840);
    
    private final int width;

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

    public int getWidth() {
        return width;
    }
}

먼저 main 메소드에서 Resolution.FHD는 FHD라는 열거값을 의미하며, enum Resolution 정의부의 FHD(1920)에서 괄호 안의 1920은 FHD의 생성자에 전달되어 width 인스턴스 변수에 저장됩니다. 그래서 resolution.getWidth()를 호출하면 1920이 출력되게 됩니다.

정리하면, 열거 클래스의 열거값들은 클래스 내에서 고유한 상수 객체로 정의되며, 열거값을 생성할 때 괄호 안에 전달된 값은 해당 열거값의 생성자로 전달되어 인스턴스 변수를 초기화하는데 사용됩니다.

이해에 도움되기를 바라겠습니다 😊
감사합니다.

최은희님의 프로필 이미지
최은희

작성한 질문수

질문하기