在写代码的时候,需要处理很多的int值来做各种判断,有时候用枚举很简单。但是当int值存在复数或者不连贯数据的时候,枚举就不是很方便。
不过可以通过注解的方式限制int的类型,达到类似枚举的提示。方便代码阅读。
/**
* 未知的布局
*/
public static final int VIEW_STATE_UNKNOWN = -1;
/**
* 内容的布局
*/
public static final int VIEW_STATE_CONTENT = 0;
/**
* 获取错误的布局
*/
public static final int VIEW_STATE_ERROR = 1;
/**
* 空数据的布局
*/
public static final int VIEW_STATE_EMPTY = 2;
/**
* 加载的布局
*/
public static final int VIEW_STATE_LOADING = 3;
/**
* 网络状态错误的布局
*/
public static final int VIEW_STATE_NET_ERROR = 4;
/**
* 需要登录的布局
*/
public static final int VIEW_STATE_NEED_LOGIN = 5;
@Retention(RetentionPolicy.SOURCE)
@IntDef({VIEW_STATE_UNKNOWN, VIEW_STATE_CONTENT, VIEW_STATE_ERROR, VIEW_STATE_EMPTY, VIEW_STATE_LOADING, VIEW_STATE_NET_ERROR, VIEW_STATE_NEED_LOGIN})
public @interface ViewState {
}
//规范变量的类型
@ViewState
private int mViewState = VIEW_STATE_UNKNOWN;
//规范方法的参数类型
/**
* Sets the current {@link com.yixun.view.MultiStateView.ViewState}
*
* @param state The {@link com.yixun.view.MultiStateView.ViewState} to set {@link MultiStateView} to
*/
public void setViewState(@ViewState int state) {
if (state != mViewState) {
int previous = mViewState;
mViewState = state;
setView(previous);
if (mListener != null) mListener.onStateChanged(mViewState);
}
}