枚举(enum)的基本用法

枚举

当我们需要某个参数为固定几个值的时候,这时可以使用枚举类型来约束参数选项(这样就不用担心乱传参数值)

枚举的基本用法

public enum MessageStatus {
        NORMAL, SENDING, ERROR
    }

NORMAL、SENDING、ERROR 都表示一个MessageStatus枚举对象

用法:

private void handleInfo(MessageStatus status){
    if (status== MessageStatus.NORMAL){
        ...
    }
}

handleInfo(MessageStatus.SENDING);

枚举封装数据

枚举可以像对象一样,有构造函数,封装数据

public enum SimpleBackPage {

    USER_BLOG(6, R.string.actionbar_title_user_blog, UserBlogFragment.class),

    NOTE(24, R.string.actionbar_title_note, NoteBookFragment.class),

    BROWSER(26, R.string.app_name, BrowserFragment.class),

    private int title;
    private Class<?> clz;
    private int value;

    private SimpleBackPage(int value, int title, Class<?> clz) {
        this.value = value;
        this.title = title;
        this.clz = clz;
    }

    public int getTitle() {
        return title;
    }

    public void setTitle(int title) {
        this.title = title;
    }

    public Class<?> getClz() {
        return clz;
    }

    public void setClz(Class<?> clz) {
        this.clz = clz;
    }

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }
}

使用:

showSimpleBack(context, SimpleBackPage.USER_BLOG);

 public static void showSimpleBack(Context context, SimpleBackPage page,) {
        Intent intent = new Intent(context, SimpleBackActivity.class);
        intent.putExtra(SimpleBackActivity.BUNDLE_KEY_PAGE, page.getValue());
        context.startActivity(intent);
    }

枚举相等判断

可以用 == 判断

private void handleInfo(MessageStatus status){
    if (status== MessageStatus.NORMAL){
        ...
    }

}

equals()方法判断

可以使用枚举对象的equals()方法比较大小

private void handleInfo(MessageStatus status){
    if (MessageStatus.NORMAL.equals(status)){
        ...
    }

}

可以用switch来判断enum

public enum MessageStatus {
        NORMAL, SENDING, ERROR
    }
private void handleInfo(MessageStatus status){
switch (status){
//在使用switch判断枚举时,case后面的enum项不要加上MessageStatus
// case MessageStatus.NORMAL:       //报错
//      break ;

   case NORMAL:
       break ;
   case SENDING:
       break ;
   case ERROR:
       break ;

}

其它用法

枚举的int类型值

有时候我们需要使用枚举来约束参数选项,但是实际需要的数据却是一个int类型值
调用枚举的ordinal() 可获取枚举的int类型值

    public class MultipleItemAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    public static enum ITEM_TYPE {
        ITEM_TYPE_IMAGE,
        ITEM_TYPE_TEXT
    }

    @Override
    public int getItemViewType(int position) {
        return position % 2 == 0 ? ITEM_TYPE.ITEM_TYPE_IMAGE.ordinal() : ITEM_TYPE.ITEM_TYPE_TEXT.ordinal();
    }
    ...
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值