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);

猜你喜欢

转载自blog.csdn.net/howlaa/article/details/129699999
今日推荐