열거형(enumerated type): 여러 상수를 보다 편리하게 선언할 수 있도록 만들어진 자바의 문법요소
final
키워드를 사용하여 선언할 수 있음class Seasons {
public static final Seasons SPRING = new Seasons();
public static final Seasons SUMMER = new Seasons();
public static final Seasons FALL = new Seasons();
public static final Seasons WINTER = new Seasons();
}
class Frameworks {
public static final Frameworks DJANGO = new Frameworks();
public static final Frameworks SPRING = new Frameworks();
public static final Frameworks NEST = new Frameworks();
public static final Frameworks EXPRESS = new Frameworks();
}
-> 상수명 중복과 타입 안정성 문제를 해결할 수 있지만, 보기에 코드가 길어지고 사용자 정의 타입이기 때문에 switch문에 할용할 수 없음
enum Seasons { SPRING, SUMMER, FALL, WINTER }
enum Frameworks { DJANGO, SPRING, NEST, EXPRESS }
-> 앞의 문제를 모두 해결할 수 있고 코드를 단순하고 가독성이 좋게 만들 수 있음. 또한 enum으로 정의한 상수는 switch문에서도 사용이 가능함
enum 열거형이름 {상수명1, 상수명2, 상수명3, ...}
관례적으로 대문자로 작성.
자동적으로 0부터 시작하는 정수값이 할당되어 각각의 상수를 가리킴.
리턴타입 | 메소드(매개변수) | 설명 |
---|---|---|
String | name() | 열거 객체가 가지고 있는 문자열을 리턴하며, 리턴되는 문자열은 열거타입을 정의할 때 사용한 상수 이름과 동일함. |
int | ordinal() | 열거 객체의 순번(0부터 시작)을 리턴함. |
int | compareTo(비교값) | 주어진 매개값과 비교해서 순번 차이를 리턴함. |
열거 타입 | valueOf(String name) | 주어진 문자열의 열거 객체를 리턴함. |
열거 배열 | values() | 모든 열거 객체들을 배열로 리턴함. |