[펌] JAVA 의 ENUM 정리. I.lib()/I.lib(Java)2014. 8. 1. 15:59
.
[펌] http://iilii.egloos.com/4343065
java enum 정리 1 - 기본 개념
enum에 대해서 총 3부작으로 연재를 할려고 합니다.
1 - 기본 개념
2 - enum의 메쏘드
3 - java.lang.Enum 클래스와 enum의 실체
이 글은 그 첫번째로 enum에 대한 개념을 잡는 글입니다.
enum은 비스무레한 원소들이 상수로 정의되는 클래스를 대신하기 위한 것입니다. java 1.5에서 추가되었죠.
Gender를 정의하려면 enum을 사용하지 않으면 다음과 같은 class로 정의할 수 있습니다.
public class Gender{
public static final int MALE = 1;
public static final int FEMALE = 2;
}
위와 같은 방법이 가지는 문제점이 몇 가지 있습니다.
첫째, MALE은 무조건 1이지만, 1이라는 숫자가 MALE만 나타내는 것은 아닙니다.
둘째, 이 Gender의 값들을 받아서 쓰는 메쏘드에서는 1,2 이외의 숫자가 들어오면 어떤 식으로 처리를 해 주어야 할지 난감합니다.
이런 경우 Gender은 다음과 같은 enum으로 정의하면 됩니다.
public enum Gender {
MALE, FEMALE
}
이제 Gender를 인자로 받아서 어떤 성별이 들어왔는지 찍어주는 메쏘드를 만들어봅시다.
public class GenderTest {
public static void printGender (Gender d){
System.out.println(d);
}
public static void main(String[] args) {
printGender(Gender.MALE);
}
}
enum은 swtich - case에서도 사용할 수 있습니다. 이번에는 남자면 "싫어", 여자면 "좋아"를 출력해주는 메쏘드를 만들어봅시다.
public class GenderTest {
public static void printGender(Gender d){
System.out.println(d);
}
public static void print(Gender d){
switch (d) {
case MALE: System.out.println("싫어");break;
default: System.out.println("좋아");break;
}
}
public static void main(String[] args) {
printGender(Gender.MALE);
print(Gender.MALE);
print(Gender.FEMALE);
}
}
여기서 유의할 점은 case MALE: 부분입니다. case Gender.MALE이 아니고 그냥 MALE입니다. switch 에 enum이 들어올 경우 컴파일러가 알아서 case 쪽에는 그 enum의 타입을 적용해 줍니다.
Gender에 어떤 요소들이 들어가 있는 지 살펴볼 수 있는 방법을 소개하죠.
for(Gender g : Gender.values()){
System.out.println(g);
}
'I.lib() > I.lib(Java)' 카테고리의 다른 글
[펌] B3 자바기반 Vert.x로 Socket.io 서버 만들기 (0) | 2014.11.19 |
---|---|
strftime(3) format 정보 (apache log format에 사용) (0) | 2014.08.13 |
[펌] 필터란 무엇인가! (0) | 2014.07.01 |
Java Servlet 이란? ( 개념 및 예제 ) (0) | 2014.01.09 |
jstat 사용법 (0) | 2014.01.03 |