Android注解(二)使用@IntDef代替枚举

我们平时是这样使用注解的:

 private static WeekDay mCurrentDay;

    enum WeekDay {
        SUNDAY, MONDAY //12字节对象头+内容+8字节对齐
    }

    public static void setCurrentDay(WeekDay weekDay) {
        mCurrentDay = weekDay;
    }

大家都知道,枚举是非常消耗内存的。每个枚举实例都是一个Object对象。拥有12字节头+内容+8字节的对齐。我们可以使用@IntDef来代替:

 private static final int SUNDAY = 0;
    private static final int MONDAY = 1;
    @IntDef({SUNDAY,MONDAY})
    @Target(ElementType.PARAMETER)
    @Retention(RetentionPolicy.SOURCE)
    @interface WekDay {

    }
    private static int mCurrentIntDay;
    public static void setCurrentDay(@WekDay int currentDay){
        mCurrentIntDay = currentDay;
    }

注意,这里@IntDef后面要包住我们的定义的常量。

如果我们这个时候直接使用这样调用:

setCurrentDay(1);

这是会报错的。

此时,必须使用:

setCurrentDay(MONDAY);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值