@IntDef的使用
2015-11-21 10:52
197 查看
android开发Enum (枚举)的完美替代 —— @IntDef的使用
2015-11-21 10:524603人阅读 评论(0)
收藏
举报
分类:
android开发-基础篇(5)
官方文档说明,安卓开发应避免使用Enum(枚举类),因为相比于静态常量Enum会花费两倍以上的内存。参 http://developer.android.com/training/articles/memory.html#Overhead
那么如果需要使用Enum应该怎么做呢?
https://noobcoderblog.wordpress.com/2015/04/12/java-enum-and-android-intdefstringdef-annotation/
[java]
view plain
copy
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 <
4000
span class="keyword">static final int SATURDAY = 6;
//用 <span></span>@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;
}
}
使用注解库
这些注解不是默认加载的,它们被包装为一个单独的库。Support Library现在是由一些更小的库组成的,包括:v4-support、appcompat、gridlayout、mediarouter等等。添加注解的最简单的方法就是打开Project Structure对话框。首先在左边选中module,然后右边选中Dependencies标签,点击“+”号按钮,选择Library Dependency。如果SDK中已经包括了Android Support库,那么注解支持库就会显示在快捷选择列表中了,只需要点击选择就可以。
相关文章推荐
- android开发Enum (枚举)的完美替代 —— @IntDef的使用
- 25.NSUserDefaults储存数据的类(数据持久化)
- Pulltorefresh使用中碰到的问题
- @@identity、scope_identity()、IDENT_CURRENT('tablename')函数的区别
- Objective-C 的属性与合成方法使用详解
- Smarty中foreach属性的使用index,last
- Xcode自动注释插件:VVDocumenter-Xcode
- linux设备驱动归纳总结(三):3面向对象思想和lseek
- 中央子午线 带号
- java 创建线程
- [HNOI2008]明明的烦恼 (Prüfer编码+质因数分解计算两个阶乘的商)
- Androi控件最上层的显示方法
- OC-内存管理-基本原理与引用计数器
- 关于标签JLabel 的用法练习
- UIViewController的生命周期
- ORACLE SQL Developer日期显示格式设置
- 第一个JAVA程序解析
- Java 货币金额大写格式
- 扩展undo表空间容量
- MySQL下使用Inplace和Online方式创建索引的教程