관련된 상수를 같이 묶어 놓은 것.
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 등 처럼 이름이 나오게 된다.
불연속적인 열거형 상수
연속적이지 않은 값을 가진 상수를 만들려면 직접 원하는 값을 아래와 같이 작성하면 된다.
단순히 값을 저장하는게 아니라
- 열거할 것에 괄호를 열고 값을 써준 후 : APPLE(50) , ...
- 값을 저장할 필드를 만들어 주고
- 생성자를 만들어 값을 넣어 준다.
- 값을 가져올 때는 메소드를 통해서 값을 가져온다.
그럼 APPLE에 50이 어떻게 들어가는지가 의문이 드는데
그렇게 되는 이유는
- APPLE을 객체 생성할 때 Fruit의 생성자를 호출한다.
- APPLE은 객체다. 직접해 보면 알텐데. 이클립스에서 ctrl 누르고 클릭하면 해당하는 것이 어디로부터 온건지 이동할 수 있는데 눌러보면 Fruit으로 간다.
- 그러면 APPLE의 매개변수에 50이 적힌게 value로 들어가고 value에 50이 저장된다.