但是由于枚举的优秀性,我们还是有在Android中使用枚举的价值的。为了解决这个问题,Android官方引入了两个注解,分别是StringDef和IntDef。具体方法见下:
首先引入依赖:
compile ‘com.android.support:support-annotations:22.0.0’
使用注解声明枚举类型(关于注解部分知识可以参照楼主之前的博客):
@IntDef({RED, GREEN, YELLOW})
@Retention(RetentionPolicy.SOURCE)
public @interface ColorEnum {
}
然后再次声明Pen类:
class Pen{
@ColorEnum
private int color;
@ColorEnum
public int getColor(){
return color;
}
public void setColor(@ColorEnum int color){
this.color = color;
}
}
在主方法调用:
public static final int MALE = 0;
public static final int FEMALE = 1;
Pen pen = new Pen();
pen.setColor(MALE);
当你为pen的color属性随便给一个int值时,IDE会报错。但仅限于IDE报错,程序仍然可以运行。比如:
pen.setColor(2);
上述代码会有红色下划线并且警告,但是程序可以编译运行,这是由于RetentionPolicy.SOURCE使得注解是在源码阶段生效的,从而只有IDE代码检查工具会去判断是否正确。