Enum (열거형) - 서로 연관된 Constants(상수)


Java에서도 Enum을 지원하고 다양한 장점을 갖고 있다.


1) C/C++ 에서의 Enum의 사용은 단순 상수로서의 기능을 갖고 있었다면, Java에서는 여러 기능을 갖춘 클래스로서의 역할을 수행한다.

2) 불필요한 혹은 중복된 코드를 줄일 수 있다.

3) 리팩토링시 변경하고자 하는 범위를 최소화할 수 있다.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public enum HttpStatusCode {
    
    Success(200), Forbidden(403),NotFound(404), InternalServerError(500);
    
    private int num;
    
    HttpStatusCode(int num){
        this.num = num;
    }
    
    public static HttpStatusCode valueOf(int num) {
        switch (num) {
            case 200 :
                return Success;
            case 403 :
                return Forbidden;
            case 404 :
                return NotFound;
            case 500:
                return InternalServerError;
            default :
                return null;
        }
    }
    
    public int getStatusCode(){
        return this.num;
    }    
}
 
 
cs



-> 위 예제처럼, httpStatus 상태코드를 미리 지정해 놓으면 효율적으로 관리 할 수 있다.





1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
public class Main {
    
    public static void main(String[] args){
        
        System.out.println(HttpStatusCode.valueOf("Success"));
        System.out.println(HttpStatusCode.valueOf(200));
        System.out.println(HttpStatusCode.valueOf(200)==HttpStatusCode.valueOf("Success"));
    
        // 해당하는 값이 없으면 IllegalArgumentException 발생
        System.out.println(HttpStatusCode.valueOf("success"));
    }
}
 
cs




 정의 되지 않은 값을 가져올 경우 Exception이 발생한다.





=> enum을 사용한다면, 상태코드만으로는 알 수 없는 오류에 대해 명확히 알 수 있었을 뿐 아니라 사용되는 값들의 범위에 대해 용이하게 관리 할 수 있다.  하지만, 빈번하게 추가/변경/삭제가 이뤄진다면 기존에 작성된 코드와의 문제가 발생할 요소가 있으니 주의해야 한다.













+ Recent posts