Java/자바 기본 문법
자바 열거형
가자미
2021. 2. 3. 17:51
-이전 방식의 열거형
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
|
interface Animal{
int DOG =1;
int CAT =2;
}
interface Person{
int MAN =1;
int WOMAN =2;
}
public class PastJava {
public static void main(String[] args) {
who(Person.MAN);//정상적 호출
who(Animal.DOG);//비정상적 호출
//두번째 오류가 컴파일 및 실행 과정에서 드러나지 않음!!!
}
public static void who(int man) {
switch(man) {
case Person.MAN:
System.out.println("남성손님입니다.");
break;
case Person.WOMAN:
System.out.println("여성손님입니다.");
break;
}
}
}
}
|
cs |
-열거형
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
|
enum Animal{
DOG,CAT
}
enum Person{
MAN, WOMAN
}
public class PastJava {
public static void main(String[] args) {
who(Person.MAN);//정상적 호출
who(Animal.DOG);//비정상적 호출
//컴파일 에러로 분별할 줄 알게 됨!!
}
public static void who(Person man) {
switch(man) {
case MAN:
System.out.println("남성손님입니다.");
break;
case WOMAN:
System.out.println("여성손님입니다.");
break;
}
}
}
|
cs |
-클래스 내에서 열거형을 정의 할 경우 클래스 내부에서만 사용가능
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public class PastJava {
enum Animal{
DOG,CAT
}
enum Person{
MAN, WOMAN
}
public static void main(String[] args) {
who(Person.MAN);//정상적 호출
who(Animal.DOG);//비정상적 호출
//컴파일 에러로 분별할 줄 알게 됨!!
}
public static void who(Person man) {
switch(man) {
case MAN:
System.out.println("남성손님입니다.");
break;
case WOMAN:
System.out.println("여성손님입니다.");
break;
}
}
}
|
cs |
-열거형의 값은 인스턴스이다!
-열거형의 생성자는 무조건 private다.
-따라서 new로 생성할 수 없고 열거형 요소로 인스턴스 생성해야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
enum Person{
MAN(29), WOMAN(25);
int age;
private Person(int age) {
this.age=age;
}
@Override
public String toString() {
return "I am " + age+ " years old.";
}
}
public class PastJava {
public static void main(String[] args) {
System.out.println(Person.MAN);
System.out.println(Person.WOMAN);
}
}
|
cs |
열거형의 조상 - java.lang.Enum
메서드 | 설명 |
class<E> getDeclaringClass() | 열거형의 클래스 객체반환 |
String name() | 열거형 상수의 이름을 문자열로 반환 |
int ordinal() | 열거형 상수가 정의된 순서를 반환 |
T valueOf(Class<T> enum Type, String name) | 지정된 열거형에서 name과 일치한 상수 반환 |