가자미의 개발이야기
자바 열거형 본문
-이전 방식의 열거형
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과 일치한 상수 반환 |
'Java > 자바 기본 문법' 카테고리의 다른 글
자바 네스티드 클래스 (0) | 2021.02.04 |
---|---|
자바 매개변수의 가변 인자 선언 & 어노테이션 (0) | 2021.02.03 |
자바 컬렉션 기반 알고리즘 (0) | 2021.02.03 |
자바 컬렉션 프레임워크 Map<K,V> : HashMap (0) | 2021.02.02 |
자바 컬렉션 프레임워크 Set<E> : HashSet, TreeSet (0) | 2021.02.02 |