본문 바로가기
개발/JAVA

[enum] enum의 활용방법

by 상용최 2020. 7. 11.
반응형

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으로 관리하게 된다면 가독성과 유지보수성이 좋아지게 된다.

 

 

반응형

댓글