枚举注解
2018-03-16 11:19
197 查看
Enum in Android 枚举Enum在java中是一个完整的类. 而枚举中的每一个值在枚举类中都是一个对象. 所以在我们使用时枚举的值将比整数常量消耗更多的内存. 当我们使用枚举在安卓应用中, 如果我们的程序本身内存消耗就比较大,或者是一个游戏的应用程序. 那么我们最好使用常量来替代枚举。可是使用了常量代替后又不能限制取值了。 Android 支持注解库中有一些好用的annotation helper 我们可以使用它们来解决我们之前的问题(在编译代码时期).
IntDef和StringDef 是两个魔术变量注解. 使用这个两个来替代之前使用的Enum. 它将帮助我们在编译代码时期像Enum那样选择变量的功能。 @IntDef和”typedef”作用非常类似,你可以创建另外一个注解,然后用@IntDef指定一个你期望的整型常量值列表,最后你就可以用这个定义好的注解修饰你的API了。
IntDef和StringDef 是两个魔术变量注解. 使用这个两个来替代之前使用的Enum. 它将帮助我们在编译代码时期像Enum那样选择变量的功能。 @IntDef和”typedef”作用非常类似,你可以创建另外一个注解,然后用@IntDef指定一个你期望的整型常量值列表,最后你就可以用这个定义好的注解修饰你的API了。
public static final int SUNDAY = 0; public static final int MONDAY = 1; {...省略部分} @IntDef({SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}) @Retention(RetentionPolicy.SOURCE) public @interface WeekDays { }
/** * 参数只能传入在声明范围内的整型,不然编译通不过 * @param currentDay */ public void setCurrentDay(@WeekDays int currentDay) {}我们也可以指定整型值作为标志位,也就是说这些整型值可以使用’|’或者’&’进行与或等操作。如果我们把@weekDays定义为如下标志位:
@IntDef(flag = true, value = {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}) public @interface WeekDays { }那么可以如下调用:
setCurrentDay(FRIDAY & SATURDAY);
相关文章推荐
- effect java 学习摘要(5) - 枚举和注解
- Effective Java读书笔记二:枚举和注解(30-37)
- Effective java笔记(五),枚举和注解
- Effective Java读书笔记(三):泛型、枚举、注解、异常
- 一种别样的鉴权方式 注解 + 接口 + 枚举 妙用
- 枚举和注解
- Java枚举和注解
- Java的枚举&注解
- 还在用枚举?我早就抛弃了!(Android 注解详解)
- 【总结】Effective java经验之谈,枚举,注解,方法,通用设计,异常
- java笔记1(策略、代理模式、枚举、反射、注解)
- Android 从枚举到注解最佳实践
- 黑马程序员 枚举,注解
- [改善Java代码]枚举和注解结合使用威力更大
- Hibernate注解之@Enumerated:针对枚举enum(转)
- Effective Java:善于使用枚举(enum)和注解(annotation)
- 枚举,注解
- Java深入(JDK1.5版本新特性、枚举以及注解介绍)
- 尚硅谷java学习笔记——9.java枚举&注解
- Effective Java笔记(不含反序列化、并发、注解和枚举)