본문 바로가기

개발일지/TIL

[230710] Enum이란?

Enum

💬 관련 있는 상수들을 모아놓는 데이터 유형입니다.

✔ 모든 필드는 대문자여야 한다
✔ 모든 필드는 싱글톤 방식의 객체로 만들어진다
✔ 모든 필드가 사용할 수 있는 생성자와 객체를 정의할 수 있다.
✔ Switch문에 사용 가능하다
✔ name, values 등 기본 메서드를 제공한다. 

 

✔ 선언 방식

 

public enum UserRoleEnum {
    USER, ADMIN
}

 

✔ 생성자, 메서드 포함 선언 방식

 

public enum UserRoleEnum {
    USER("ROLE_USER"), ADMIN("ROLE_ADMIN"); 

    private final String authority;

    UserRoleEnum(String authority) {
        this.authority = authority;
    }

    public String getAuthority() {
        return this.authority;
    }
}

 

✔ 사용 코드

 

public void signup(AuthRequestDTO authRequestDTO) {
    String userName = authRequestDTO.getUsername();
    String password = authRequestDTO.getPassword();
    UserRole userRole = UserRole.USER;

    validateUser(userName, password);

    if(authRequestDTO.isAdmin()){
        if(!ADMIN_TOKEN.equals(authRequestDTO.getAdminToken())){
            throw new IllegalArgumentException("Admin Token Not Valid");
        }
        userRole = UserRole.ADMIN;
    }

    userRepository.save(User.builder()
            .username(userName)
            .password(passwordEncoder.encode(password))
            .userRole(userRole)
            .build());
}

생각

enum을 통해 관련 있는 상수를 모아서 사용하면 확실히 사용하고 관리하기 좋은 것 같다. 그동안 enum의 특징은 잘 몰랐는데, 이번 기회를 통해 잘 알고 사용할 수 있을 것 같다.