* enum Type은 구조체 대신 사용(Java 구조체가 없다. )
//enum 선언
public enum NetworkState {
NETWORK_ON, NETWORK_OFF, AUTH_ON, AUTH_OFF
};
private NetworkState[] networkStates = NetworkState.values(); // 배열로 가지고온다.
//핸들러 생성
Handler mHandler = new Handler() {
@Overridepublic void handleMessage(Message msg) {try {
switch (networkStates[msg.what]) {case AUTH_ON:break;case AUTH_OFF:break;default:break;}
} catch (Exception e) {}
} //end method__
}; //end handler
//sendMessage
Message msg = mHandler.obtainMessage(NetworkState.AUTH_ON.ordinal(), 0, 0);
mHandler.sendMessage(msg);
* enum Data Type 설명 :
enum은 데이터 타입 정의 해서 필요한 값만 사용 할 수 있게 사용하기 딱 좋은 데이터 형이다.
예를 든다면 통신사 타입을 사용 하는 변수가 필요하다 하자.
보통은 문자열 또는 정수형으로 "SKT", "KT"... 또는 "1" - SKT, "2" - KT 등으로 상호간 약속을 하고 이 테이더 를 사용하게 된다.
이 약속을 잘 지킬 경우 문제가 없어지지만 그렇지 않을 경우 에러가 발생 할 수 있다.
바로 함수에서 파라미터로 이 값을 전달 받을 케이스다.
void setTelecomType( int type);
이런 정수형으로 타입을 받을 때 서로 약속 한 정수 값이 아닌 다른 값이 왔을 경우 함수 안에서 일일히 if 문으로 데이터 유효성 검사를 해야만 하는 것이다. 저런거 많이 봤다... 하지만 이 경우 enum을 사용할 경우 위와 같은 걱정은 사라진다. enum으로 정의한 값만 올 수 있기 때문에 별도 다른 값이 올 수 없다. 특히 java는 enum이 byte 형태의 데이터가 아닌 별도 object 이므로 데이터가 혼용될 가능성은 낮다.
위에서 예를 든 통신사를 실제 enum으로 구현해 보자.
/**
* 통신사 enum 값 정의 */ public enum ETelecom {
/** None */
None,
/** SKT */
SKT, /** KT */ KT, /** LGT */ LGT, /** MVNO */ Other; } |
간단히 enum을 정의 해 사용 가능 하다.
댓글 없음:
댓글 쓰기