Android中使用注解替代枚举

枚举最大的作用是提供了类型安全。为了弥补Android平台不建议使用枚举的缺陷,官方推出了两个注解,IntDef和StringDef,用来提供编译期的类型检查。

首先,引入依赖包:

compile 'com.android.support:support-annotations:22.0.0'
public class MyConstants {
    public static final int STATE_ONE = 1;
    public static final int STATE_TWO = 2;
    public static final int STATE_THREE = 3;

    // 自定义一个注解MyState
    @IntDef({STATE_ONE, STATE_TWO, STATE_THREE})
    public @interface  MyState {}
}

如果我们定义一个状态变量:

@MyConstants.MyState
private int state;

上面的state变量被注解修饰,这样就限制了上面变量的值只能为注解里面定义的三种类型。

另外,如果我们定义的方法传入的变量也被这个注解修饰,这样就限制了我们传入参数的值只能为注解的几种类型。

private void setState(@MyConstants.MyState int state) {
    //some code
}

当调用方法时只能使用STATE_ONE,STATE_TWO和STATE_THREE。使用其他值会导致编译提醒和警告。

但是需要说明的是这仅仅是AS的静态代码检查而已,就像上面的代码,尽管IDE已经报错,你还是可以直接Run Application,而且也可以成功运行。它只是为了在程序员写代码的时候可以提醒程序员应该注意这个地方可能出错。

欢迎关注微信公众号:DroidMind
精品内容独家发布平台


呈现与博客不一样的技术干货

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值