使用IntDef、StringDef注解代替ENUM
一、前言
在android系统中,不推荐使用ENUM类型,因为他占用内存较大,所以一般使用静态常量来代替枚举,但是有些场景我们只需要某几个固定的或一个范围内的值。此时静态常量就没有办法用来检查我们传递的是不是自己想要的值,这个场景下可以使用这两个注解来完成,它会在编译的时候检查我们的赋值是否符合要求,提前发现错误。
二、依赖
这两个注解实现需要com.android.support:support-annotations
依赖包
三、实例
StringDef用法与IntDef相同,以下为一个IntDef例子:
import android.support.annotation.IntDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
public class IntDefDemo {
public static final int TEST_ONE = 1;
public static final int TEST_TWO = 2;
public static final int TEST_THREE = 3;
@IntDef({TEST_ONE, TEST_TWO, TEST_THREE})
@Retention(RetentionPolicy.SOURCE)
public @interface Test{}
private @Test int mTestValue;
public void setTestVal