카테고리 없음

Java - 열거형 (Enum)

비뀨_ 2022. 3. 12. 00:49

관련된 상수를 같이 묶어 놓은 것. 

Enum은 모든 열거형의 조상이다. 아래의 메서드를 상속 시킨다.

메서드 설명
Class<E> getDeclaringClass() 열거형의 Class 객체를 반환
String name() 열거형 상수의 이름을 문자열로 반환
int ordinal() 열거형 상수가 정의된 순서를 반환(0부터)
T valueOf(Class enumType, String name) 지정된 열거형에서 name과 일치하는 열거형 상수를 반환
static E[] values() 모든 상수들을 배열로 반환
static E valueOf(String name) 상수이름을 쓰면 해당 열거형 상수를 반환

Enum의 사용법

enum 이름 { 열거할 것들1 , 열거할 것들2, 열거할 것들3, ...} 으로 작성을 한다.

 

 

enum으로 작성한 이름 변수명 = 작성한 이름.열거할것

값을 위처럼 써서 출력을 해보면 APPLE 등 처럼 이름이 나오게 된다.

 

불연속적인 열거형 상수

연속적이지 않은 값을 가진 상수를 만들려면 직접 원하는 값을 아래와 같이 작성하면 된다.

 

단순히 값을 저장하는게 아니라

 

  1. 열거할 것에 괄호를 열고 값을 써준 후 : APPLE(50) , ... 
  2. 값을 저장할 필드를 만들어 주고
  3. 생성자를 만들어 값을 넣어 준다.
  4. 값을 가져올 때는 메소드를 통해서 값을 가져온다.

그럼 APPLE에 50이 어떻게 들어가는지가 의문이 드는데 

그렇게 되는 이유는

  • APPLE을 객체 생성할 때 Fruit의 생성자를 호출한다.
    • APPLE은 객체다. 직접해 보면 알텐데. 이클립스에서 ctrl 누르고 클릭하면 해당하는 것이 어디로부터 온건지 이동할 수 있는데 눌러보면 Fruit으로 간다. 
  • 그러면 APPLE의 매개변수에 50이 적힌게 value로 들어가고 value에 50이 저장된다.