Enum값에 대해서 알아보겠습니다
오늘은 Enum에 대해서 무엇인지 정리해 보고,
그 특징들에 대해서 알아보도록 하겠습니다.
1. Enum
enum은 Enumerated Type의 줄임말인데요.
열거형 타입이라는 의미입니다.
선택할 수 있는 관련되어 있는 상수들을 모아서,
하나의 집합으로 정의한 상수인데요.
이것을 좀더 쉽게 풀어보도록 하겠습니다.
요일은 월요일부터 일요일까지만 존재하는데요.
따라서, 요일에 관해서는 월요일~일요일 이 7가지만 쓰도록 하면,
좀 더 안전하게 코딩을 할 수 있을텐데요.
enum을 사용해서 열거되는 아이템들을 정해놓고 그 안에서만 선택하도록 할 수 있습니다.
2. Enum의 특징
2-1. 명확하다
키워드인 enum을 사용하므로,
명확하게 열거형 상수를 의미할 수 있구요.
의도하지 않게, enum이 객체화 하거나 상속되는 것을 컴파일단계에서 막을 수 있습니다.
2-2. Enum도 클래스이다.
Enum도 클래스이므로
생성자를 가질 수 있습니다.
사실 아래 이미지와 같이 Days라는 enum을 호출하면,
MONDAY~SUNDAY까지의 요일의 객체를 각각 생성시켜 주는데,
이 때 생성자에 있는 "Days: 생성자 생성"이라는 로그도 찍히게 됩니다.
물론, 클래스이므로 변수와 메소드도 생성해서 사용할 수 있는데요.
필요에 따라서 static메소드를 생성해서 특정 값에 접근할 수 있도록 할 수 있습니다.
2-2. 값을 꺼내어 볼 수 있다.
Enum의 가장 또다른 특징은 배열과 같이,
어떤 상수들로 이루어 져있는지 몰라도,
values메소드를 이용해서,
그 값들에 대해 for문을 사용해서 볼 수 있다는 것입니다.
2-3. intent를 이용해 전달하고 받을 수 있다.
enum을 보낼때는 아래와 같이 putEXTRA를 사용해주면 되구요.
Days mDays = Days,MONDAY;
intent.putExtra("KEY_ENUM", mDays);
받을 때는 아래와 같이 getSerializableExtra를 이용해서 받은다음 해당 ENUM으로 캐스팅해서 사용할 수 있습니다.
Days receivedDay = (Days) getIntent().getSerializableExtra(KEY_ENUM);
지금까지 Enum에 대해서 간단히 알아보고,
특징들에 대해서도 정리해 보았습니다.
간략하면서 명확한 코딩을 하는데 많은 도움을 주므로,
코딩하는데 많은 도움이 될 것 같네요.