열거형은 여러 상수들을 보다 편리하게 선언할 수 있도록 만들어진 자바 문법요소이다.
몇가지로 한정된 변하지 않는 데이터를 다루는데 사용된다.
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();
}
public class Main {
public static void main(String[] args) {
Seasons seasons = Seasons.SPRING;
switch (seasons) {
case Seasons.SPRING:
System.out.println("봄");
break;
case Seasons.SUMMER:
System.out.println("여름");
break;
case Seasons.FALL:
System.out.println("가을");
break;
case Seasons.WINTER:
System.out.println("겨울");
break;
}
}
}
위의 예제 코드는 호환되지 않는 타입이라는 에러가 발생하는데,
switch문의 조건은 char, byte, short, int, Character, Byte, Short, Integer, String, enum 타입만 가능하지만 Season 객체는 사용자 정의 타입이라서 에러가 발생한다.
public enum Season {
SPRING,
SUMMER,
FALL,
WINTER
}
public class Main {
public static void main(String[] args) {
Season season = Season.WINTER;
switch (season){
case SPRING:
System.out.println("봄");
break;
case SUMMER:
System.out.println("여름");
break;
case FALL:
System.out.println("가을");
break;
case WINTER:
System.out.println("겨울");
break;
}
}
}
-> 출력 결과
위의 예제 코드처럼 enum을 사용하면 switch문을 사용할 수 있다.
자바에서 열거형은
🔻여러 상수들을 보다 편리하게 선언하고 관리할 수 있으며,
🔻상수명의 중복을 피하고,
🔻타입에 대한 안정성을 보장한다.
enum 열거형이름 { 상수명1, 상수명2, 상수명3, ...}
public enum Season {
SPRING,
SUMMER,
FALL,
WINTER
}
위 예제 코드를 보면 Season이라는 이름의 열거형은 SPRING, SUMMER, FALL, WINTER 총 4개의
열거 객체를 포함하고 있다.
그리고 각각의 상수들에는 따로 값을 지정해주지 않아도 자동적으로 0부터 시작하는 정수값이 할당되어 각각의 상수를 가리킨다.
enum Seasons { SPRING, SUMMER, FALL, WINTER }
public class EnumExample {
public static void main(String[] args) {
Seasons favoriteSeason = Seasons.SPRING;
System.out.println(favoriteSeason); // SPRING
}
}
위 예제 코드에서는 Season.SPRING을 Season 타입의 참조변수(favoriteSeasond)에 할당하고 있다.