작년부터 안드로이드 공부를 하면서 조금씩 자바(java) 를 익혀가고 있다.
C++ 이랑 비슷하면서도 참 많이 다른 게 자바인데 그 중에 특히 enum 은 그동안 C++ 에서 불편해 하던 것이
다 구현도 있어서 참 편하다
예전에 C++ 관련 쓴 글은 아래 링크 참조
기본적인 enum 선언이나 사용법은 자바나 C++ 이나 비슷하다
public enum Fruit { |
간단한 과일을 enum 으로 선언했는데, 각 enum 에 어떻게 값이 들어 가는 지는 아래 테스트 코드로 확인 가능
// 간단한enum 확인용테스트코드 |
C++ 처럼 자바도 enum 항목들이 0,1,2,3… 순서대로 저장되고 추가적으로 enum.name() 멤버 함수를 통해 enum 이름도 구할 수 있다.
사실 자바의 enum 은 class 이기 때문에 C++ 보다 훨씬 많은 기능이 가능하고, 예전에 C++ 에서 복잡하게 해 보려 했던 일들(위 링크 참조)이 기본적으로 구현되어 있다.
위 enum 선언을 조금 고쳐서 각 과일에 적당한 한글 이름과 색상 정보를 추가해 보자 .
public enum Fruit {
Banana("바나나", "노랑"),
Apple("사과", "빨강"),
Lemon("레몬", "노랑"),
Tomato("토마토", "빨강"),
Melon("멜론", "초록");
private String m_sName;
private String m_sColor;
// 이름, 색상에맞는새로운생성자마련
Fruit(String sName, String sColor)
{
m_sName = sName;
m_sColor = sColor;
}
// 과일색상가져오기함수
public String getColor()
{
return m_sColor;
}
// 과일이름가져오기함수
public String getName()
{
return m_sName;
}
}
코드는 정말 간단 ^^;
enum 옆에 ("바나나", "노랑") 같은 2가지 인자가 추가되었는데,
이처럼 자바는 enum 의 각 항목에 추가적인 정보를 개수 상관없이 마음대로 추가할 수 있다.
물론, 2가지 정보를 추가했기 때문에 enum 생성자를 변경해야 한다
Fruit(String sName, String sColor) |
이제 각 enum 별로 위 생성자대로 초기화가 진행 되어 각 항목별로 멤버 변수에 값이 할당 된다.
추가된 정보가 잘 들어 갔는지 확인하는 테스트 코드.
// 테스트코드 |
위 코드처럼 실행하면 아래 그림처럼, enum 의 각 항목 별로 순서, 원래 이름, 한글 이름, 색상까지 잘 나온다.
자바 enum 의 이러한 확장 기능을 잘 이용하면
데이터를 구분 짓는 ID 와 그 ID 와 연관된 추가적인 정보를 잘 관리 할 수 있어 정보를 체계적으로 다루는 데 아주 용이하다
(물론, 구조체나 클래스로 얼마든지 만들 수 있지만, 기본적으로 언어에서 제공한다는 것은 그만큼 사용하기 편하다는 뜻임)
댓글