Java/Java 문법
Enum
열심히 해
2024. 10. 10. 10:25
Enum(enumeration : 열거)
제한된 목록에서 값을 가져와 사용하기 위해 만듭니다!
제한된 목록이란 예를 들어
성별의 남, 여
요일의 월, 화, 수, 목, 금, 토, 일
계절의 봄, 여름, 가을, 겨울
월, 혈액형 등이 있습니다.
Enum
public enum Season {
// 변하지 않는 값이기에 상수처럼 대문자로 적는 것이 관례
SPRING,
SUMMER,
FALL,
WINTER
}
Enum
public enum Week {
MONDAY,
TUESDAY,
WEDNESDAY,
// WENDESDAY 동일한 값 넣을 수 없음
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY,
FALL
}
Class
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
// 참조 타입이기에 null로 초기화 가능
Week today = null;
Season season = null;
// 열거값 대입
today = Week.FRIDAY;
season = Season.FALL;
// 열거값 비교
if (season != Season.FALL) { // Week 에 FALL 이라는 값이 있음에도 season == Week.FALL 불가.
System.out.println("가을");
} else {
System.out.println("가을이 아닙니다");
}
// Calendar 객체 생성
Calendar calendar = Calendar.getInstance();
// Calendar의 메서드를 이용해서 변수에 저장
int month = calendar.get(Calendar.MONTH);
switch (month) {
case 3, 4, 5:
System.out.println("봄");
break;
case 6, 7, 8:
System.out.println("여름");
break;
case 9, 10, 11:
System.out.println("가을");
break;
case 12, 1, 2:
System.out.println("겨울");
break;
}
}
}
enum은 사실 단순한 상수 집합 이상의 기능을 제공하는 특별한 클래스입니다. 각 열거형 값(USER, ADMIN)이 실제로는 enum의 인스턴스이며, 생성자를 통해 초기화될 수 있습니다.
public enum UserRoleEnum {
USER(Authority.USER), // USER는 생성자를 통해 Authority.USER 값으로 초기화됨
ADMIN(Authority.ADMIN); // ADMIN도 동일하게 Authority.ADMIN 값으로 초기화됨
private final String authority;
// 생성자: String 타입의 authority를 받는 생성자
UserRoleEnum(String authority) {
this.authority = authority;
}
public String getAuthority() {
return this.authority;
}
public static class Authority {
public static final String USER = "ROLE_USER";
public static final String ADMIN = "ROLE_ADMIN";
}
}