반응형
JAVA를 처음 배울때 enum 부분을 보면서 이걸 어디다 써?
쓸데도 없어보이는데 왜 배우는거지? 라는 의문이 들것이다. (나는 들었다...)
실제로 취업을 하고나서 팀장님께서 사용하시기 전까지만해도 쓸모가 없는줄 알았다.
하지만 enum은 상태값을 관리할때 매우 강력하다.
말로만 쓴다면 모르니 예제를 통해 알아보도록 하자.
USER의 정보를 가지는 테이블이 있다.
USER라는 테이블은 아래와 같이 USER의 권한을 가지는 컬럼이 있다.
우리는 "1"은 유저 "2"는 유저라고 정하고 그 규칙을 맞춰서 코딩을 했다.
public class Account {
private String Role;
public Account(String role) {
Role = role;
}
}
public final class main {
public static void main(String[] args) {
Account account = new Account("1");
}
}
위와 같이 코딩을 했을때 규칙을 아는 사람이 봤을때는 "유저를 집어넣는구나" 라고 생각할 수 있다.
하지만 규칙을 모르는 사람이 봤을때는 어떨까?
"1이 뭐지?" 라는 생각과 함께 누군가에게 물어보지 않으면 절대 알 수가없다.
문서가 잘 정리되어 있다면 문서를 보고 알수도 있지만 그 또한 쉽지않다.
이런 상황에서 enum 은 매우 강력하다.
enum을 아래와 같이 정의하고 Account를 아래와 같이 바꾼다.
public enum EnumEx {
USER("1","유저"),
ADMIN("2","어드민")
;
private final String code;
private final String symbol;
EnumEx(String code, String symbol) {
this.code = code;
this.symbol = symbol;
}
public String getCode() {
return code;
}
public String getSymbol() {
return symbol;
}
}
public final class main {
public static void main(String[] args) {
Account account = new Account(EnumEx.USER.getCode());
}
}
Account를 선언할때 코드만 보아도 USER객체를 생성한다는것을 유추할 수 있다.
더 확신을 하고 싶다면 EnumEx 클래스를 들어가본다면 USER라는 객체는 code "1"을 가지고 뜻은 유저라는것을 명시하고 있다.
클래스자체로 설명이 가능하다는 뜻이다.
상태값과 같은것들을 ENUM으로 관리하게 된다면 가독성과 유지보수성이 좋아지게 된다.
반응형
'개발 > JAVA' 카테고리의 다른 글
[JAVA] Stream을 이용하여 Map 안에 있는 값 간편하게 출력하기 (0) | 2020.08.23 |
---|---|
[JAVA 8] Stream을 활용하여 합계를 구하는 여러가지 방법 (0) | 2020.08.21 |
[effective java 3/E] 제네릭 <로 타입은 사용하지 말라> (0) | 2020.07.11 |
[effective java 3/E] 추상 클래스보다는 인터페이스를 우선하라. (0) | 2020.07.08 |
[effective java 3/E] 상속보다는 컴포지션을 사용하라 (0) | 2020.07.05 |
댓글