IntDef本身是个Android中提供的一种注解,用于替代枚举的使用
- 定义static final的常量
private static final int ADD = 0;
private static final int SUB = 1;
private static final int MUL = 2;
private static final int DIV = 3;
- 定义一个IntDef注解,包含上面的常量,两种形式
第一种形式:
@IntDef({ADD,SUB,MUL,DIV})
第二种形式
@IntDef(flag = true, value = {ADD,SUB,MUL,DIV})
区别是第二种可以用条件进行位运算,更多详细信息,请参考
https://developer.android.com/reference/android/support/annotation/IntDef.html
3.定义一个注解,表明当前@IntDef的保留策略,只保留源码中,编译时删除,
@Retention(RetentionPolicy.SOURCE)
当然你还可以指定其他策略:
Class:编译时被保留,在class文件中存在,但JVM将会忽略
Runtime:将被JVM保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用
4.自定义一个注解 表明类型
public @interface Operation{}
5.使用,在方法中使用,类型安全,替代枚举
public void operation(@Operation int opeartion) {
switch (opeartion) {
case ADD:
break;
case SUB:
break;
case DIV:
break;
case MUL:
break;
}
}
最终代码
private static final int ADD = 0;
private static final int SUB = 1;
private static final int MUL = 2;
private static final int DIV = 3;
@IntDef({ADD,SUB,MUL,DIV})
@Retention(RetentionPolicy.SOURCE)
public @interface Operation{}