Enum이 뭘까?

형기브·2023년 6월 30일
0

JAVA

목록 보기
5/6

Enum과 Enumerated

도대체 Enum이 뭔데?

클래스는 그냥 클래스인 줄 알았는데, spring을 공부하다가 갑자기 Enum 클래스가 나오고 사용법이 익숙치 않아서 이참에 끝내려 한다.


1.정의.

상수 그룹을 표현하는 특수한 클래스이다.

enum Level {
  LOW,
  MEDIUM,
  HIGH
}

앞에 class 가 아닌 enum 을 붙인다. 그래도 클래스다.


2.사용법.

값들을 콤마(,)로 구분하고 대문자로 나타낸 후 나열한다.

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)
}

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" 출력.

4.알게된 점.

이런식으로 enum을 활용해 상수를 열거하면
여러개의 변수를 만들거나 할 필요 없이 간단하게 표현 할 수 있다.

5.의문

그러면 UserRoleEnum은 클래스들을 열거해놓은것인가??? 아직도 모르겠다...
++여러개의 UserRoleEnum 타입의 상수들을 열거해 놓고 아래의 생성자나 Getter등을
각각의 UserRoleEnum객체들이 사용할 수 있다는 말인 것 같다...


profile
Slow but Steady

0개의 댓글