Android 개발/Java, Java8

Enum값에 대해서 알아보겠습니다

Developer88 2018. 4. 10. 00:01
반응형

오늘은 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에 대해서 간단히 알아보고,

특징들에 대해서도 정리해 보았습니다.

간략하면서 명확한 코딩을 하는데 많은 도움을 주므로,

코딩하는데 많은 도움이 될 것 같네요.

728x90