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을 사용한다면, 상태코드만으로는 알 수 없는 오류에 대해 명확히 알 수 있었을 뿐 아니라 사용되는 값들의 범위에 대해 용이하게 관리 할 수 있다. 하지만, 빈번하게 추가/변경/삭제가 이뤄진다면 기존에 작성된 코드와의 문제가 발생할 요소가 있으니 주의해야 한다.
'programming > Java' 카테고리의 다른 글
[JAVA 8] - Default Method, Functional Interface (Prediceate, Consumer, ...) (0) | 2019.02.17 |
---|---|
[JAVA 8] - 함수형 프로그래밍(Functional Programming) (0) | 2019.02.17 |
# NIO - Selector (0) | 2018.05.19 |
# chatting program 구현 / 네트워크 교육과정 (4일차) (1) | 2018.03.22 |
# network, socket / 네트워크 교육과정 (3일차) (0) | 2018.03.22 |