/** * Created by Administrator on 2019/5/5. * 性能优化代替枚举 * 限制指定输入内容 * (每个枚举值都是一个单利对象,在使用时会增加额外的内存,较多的枚举会增加dex文件,特别是dex文件多大型项目,枚举的初始化容易导致ANR) */ public class MyName { public static final int JEK = 1; public static final int DAVE = 2; public static final int TANM = 3; public static final int AAROM = 4; //flag设置是否可以多选,value设置可以设置那些值 @IntDef(flag = true, value = {JEK, DAVE, TANM, AAROM}) // @Target(ElementType.TYPE) //接口、类、枚举、注解 // @Target(ElementType.FIELD) //字段、枚举的常量 // @Target(ElementType.METHOD) //方法 // @Target(ElementType.PARAMETER) //方法参数 // @Target(ElementType.CONSTRUCTOR) //构造函数 // @Target(ElementType.LOCAL_VARIABLE)//局部变量 // @Target(ElementType.ANNOTATION_TYPE)//注解 // @Target(ElementType.PACKAGE) ///包 @Target({ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD}) //注解的存活时间 // RetentionPolicy.SOURCE 原文件有效,被编译时失效 // RetentionPolicy.CLASS 在class文件时有效,可能被虚拟机忽略 // RetentionPolicy.RUNTIME 运行时有效 @Retention(RetentionPolicy.SOURCE) public @interface TYPE { } //定义个默认值 private @TYPE int vale = JEK; // set get 方法 public void setName(@TYPE int type) { vale = type; } @TYPE public int getName() { return vale; }
}