개발일지/TIL
[230710] Enum이란?
ironprayer
2023. 7. 10. 23:49
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의 특징은 잘 몰랐는데, 이번 기회를 통해 잘 알고 사용할 수 있을 것 같다.