클래스는 그냥 클래스인 줄 알았는데, spring을 공부하다가 갑자기 Enum 클래스가 나오고 사용법이 익숙치 않아서 이참에 끝내려 한다.
상수 그룹을 표현하는 특수한 클래스이다.
enum Level {
LOW,
MEDIUM,
HIGH
}
앞에 class 가 아닌 enum 을 붙인다. 그래도 클래스다.
값들을 콤마(,)로 구분하고 대문자로 나타낸 후 나열한다.
Level myVar = Level.MEDIUM;
닷(.)으로 값을 호출 할 수있다.
상수기 때문에 스위치문에서도 사용 가능하다.
switch(myVar) {
case LOW:
System.out.println("Low level");
break;
case MEDIUM:
System.out.println("Medium level");
break;
case HIGH:
System.out.println("High level");
break;
}
++상수에 특정값을 넣어줄 수 있다.
맴버 혹은 속성이라고도 한다.
enum Level {
LOW(1),
MEDIUM(2),
HIGH(3)
}
public enum UserRoleEnum {
USER(Authority.USER), // 사용자 권한
ADMIN(Authority.ADMIN); // 관리자 권한
private final 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";
}
}
헷갈렸던 강의의 내용이다.
천천히 로직의 순서를 따라가보자.
USER("ROLE_USER"), //보기쉽게 불러온 String을 넣어줬다.
ADMIN("ROLE_ADMIN")
젤 헷갈렸던게 USER("ROLE_USER") 이게 무슨말인데????
++ "ROLE__USER" 는 USER 의 속성 혹은 맴버이다.
생성자를 통해서 이 속성 값을 지정해줄 수 있고
Getter를 통해 불러올 수 있다.
USER("ROLE_USER") {
this.authority = "ROLE_USER";
}
private final String authority; //여기에 authority가 "ROLE_USER" 이 되는 것.
UserRoleEnum role = UserRoleEnum.USER;
System.out.println(role); //USER 출력.
객체를 호출했기 때문에 USER가 나온다.
String role = UserRoleEnum.USER.getAuthority();
System.out.println(role); //"ROLE_USER" 출력.
이런식으로 enum을 활용해 상수를 열거하면
여러개의 변수를 만들거나 할 필요 없이 간단하게 표현 할 수 있다.
그러면 UserRoleEnum은 클래스들을 열거해놓은것인가??? 아직도 모르겠다...
++여러개의 UserRoleEnum 타입의 상수들을 열거해 놓고 아래의 생성자나 Getter등을
각각의 UserRoleEnum객체들이 사용할 수 있다는 말인 것 같다...