@IntDef的使用(替代枚举)
来源:互联网 发布:传奇人形怪数据库 编辑:程序博客网 时间:2024/05/29 03:02
安卓开发应避免使用Enum(枚举类),因为相比于静态常量Enum会花费两倍以上的内存。使用@IntDef注解来代替枚举是个不错的选择。
添加android注解依赖:
compile 'com.android.support:support-annotations:25.1.0'使用:
public class MainActivity extends Activity { //先定义 常量 public static final int SUNDAY = 0; public static final int MONDAY = 1; public static final int TUESDAY = 2; public static final int WEDNESDAY = 3; public static final int THURSDAY = 4; public static final int FRIDAY = 5; public static final int SATURDAY = 6; //用 @IntDef "包住" 常量; // @Retention 定义策略 // 声明构造器 @IntDef({SUNDAY, MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY}) @Retention(RetentionPolicy.SOURCE) public @interface WeekDays {} @WeekDays int currentDay = SUNDAY; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setCurrentDay(WEDNESDAY); //声明变量 @WeekDays int today = getCurrentDay(); switch (today){ case SUNDAY: break; case MONDAY: break; case TUESDAY: break; case WEDNESDAY: break; case THURSDAY: break; case FRIDAY: break; case SATURDAY: break; default: break; } } public void setCurrentDay(@WeekDays int currentDay) { this.currentDay = currentDay; } @WeekDays public int getCurrentDay() { return currentDay; }}
public class Toast { static final String TAG = "Toast"; static final boolean localLOGV = false; /** @hide */ /*定义部分*/ @IntDef({LENGTH_SHORT, LENGTH_LONG}) @Retention(RetentionPolicy.SOURCE) public @interface Duration {} public static final int LENGTH_SHORT = 0; public static final int LENGTH_LONG = 1; ... /*作为类型使用时*/ /** * Set how long to show the view for. * @see #LENGTH_SHORT * @see #LENGTH_LONG */ public void setDuration(@Duration int duration) { mDuration = duration; } /*做为返回值时*/ /** * Return the duration. * @see #setDuration */ @Duration public int getDuration() { return mDuration; }}
public class MainActivity extends AppCompatActivity{ public static final int STATE_NONE = -1; public static final int STATE_LOADING = 0; public static final int STATE_SUCCESS = 1; public static final int STATE_ERROR = 2; public static final int STATE_EMPTY = 3; private @State int state; public void setState(@State int state){ this.state = state; } @State public int getState() { return this.state; } @IntDef({STATE_EMPTY, STATE_ERROR, STATE_LOADING, STATE_NONE, STATE_SUCCESS}) @Retention(RetentionPolicy.SOURCE) public @interface State { }} @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }
阅读全文
0 0
- @IntDef的使用(替代枚举)
- 使用注解@IntDef替代枚举
- android开发Enum (枚举)的更轻量级的替代方案 —— @IntDef的使用
- (4.6.18)android开发Enum (枚举)的完美替代 —— @IntDef的使用
- android开发Enum (枚举)的完美替代 —— @IntDef的使用
- android开发Enum (枚举)的完美替代 —— @IntDef的使用
- 使用注解@IntDef替代枚举学习
- Android @IntDef的使用 - 代替枚举
- Android开发中用于替代Enum的@IntDef的使用
- android开发Enum (枚举)的更轻量级的替代方案 —— @IntDef的使用 原创 2017年11月28日 09:17:58 77 最近在翻看Android源码的时候,无意中看到这么一个注解,
- Android 开发 之 Enum (枚举) —— @IntDef的使用
- Android 开发 之 Enum (枚举) —— @IntDef的使用
- Android 开发 之 Enum (枚举) —— @IntDef的使用
- Androi--开发 之 Enum (枚举) —— @IntDef的使用
- @IntDef的使用
- Java Enum枚举替代方案--Android IntDef/StringDef Annotation注解
- @IntDef 替代 Enum
- 教你使用Android自带注解@IntDef代替Enum (枚举)
- Android Studio 3.0 新特性,Android Studio 3.0新增的功能和更改
- 用css3制作旋转加载动画的几种方法
- JSP 表达式语言
- [转载]Python垃圾回收机制--完美讲解!
- 阿里云(ECS+RDS)部署PHP+MySQL网站初探
- @IntDef的使用(替代枚举)
- JavaScript 进行字符串的查找
- 右上角未读消息数
- 浅谈协方差矩阵
- Java虚拟机(五):虚拟机类加载机制
- 权限框架——CAS之工作原理
- 设计模式统计
- [Unity&NGUI&对象]怎么把按钮自身 的 对象 传递给另外一个脚本对象
- java中对象与字节数组相互转换