Enum type 에 대해서

Enum 선언

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class 선언과 유사 하고 
변수, 생성자, 메서드를 추가 할수 있다.

생성자는 자동으로 private 잡히고 인스턴스가 전체 프로그램에
하나만 생성 되는 것을 자바에서 보장 해 싱글톤으로 활용 된다고 한다.

public enum CarMaker {

KIA(100), HYUNDAI(200), BMW(300);

private final int value;

CarMaker(int value)
{
this.value = value;
System.out.println("Contractor:"+value);
}

....
}

Enum 사용

정의 한 Enum의 사용은 CarMaker.KIA 이다.
마치 static class 의 변수 참조 하듯이 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
values(), ordinal, name(), valueOf() 등을 호출 할수 있다.

public class EnumEx {

public static void main(String[] args) {

CarMaker maker = CarMaker.KIA;

CarMaker[] list = CarMaker.values();

for (CarMaker c : list) {
System.out.printf("ordinal:%d name:%s \n", c.ordinal(), c.name());
}

CarMaker value = CarMaker.valueOf("KIA");
System.out.println(value);

}
}

실행 결과

1
2
3
4
5
6
7
Contractor:100
Contractor:200
Contractor:300
ordinal:0 name:KIA
ordinal:1 name:HYUNDAI
ordinal:2 name:BMW
KIA

프로세스에 코드가 올라가면서 Static으로 상수 숫자 만큼 생성자가 호출 된다.
여기선 KIA, HYUNDAI, BMW 3개임으로 3번.

maker 를 디버거로 인스턴트화 된것을 보면
maker 는 value, name, ordinal 을 멤버로 가지고 있음

  1. value = 100
  2. name = “KIA”
  3. ordinal = 0

values()는 이를 가지고 있는 배열을 반환 한다.

싱글톤 활용에 대한 글

https://scshim.tistory.com/361

출처

https://www.youtube.com/watch?v=jVlzwq41whE&t=1s