写代码时,常用到Java中的枚举类型,枚举可以对常量进行限制,有效避免代码出错。但是在Android中,枚举类型的性能较差。
可以利用Android的IntDef、StringDef注解(Annotation),用int、String实现类似枚举的效果。
需要在项目中增加一条依赖项:
compile 'com.android.support:support-annotations:20.0.0'
IntDef的使用示例如下,StringDef的用法类似。调用错误时,AndroidStudio会报错如下。这里注解起到的只是检查代码的作用,对实际编译并没有什么影响。
-
public class ImagePreviewActivity {
-
public static final int VIEW = 1;
-
public static final int SELECT = 2;
-
public static final int DELETE = 3;
-
// 定义Type类型
-
@IntDef({VIEW, SELECT, DELETE})
-
public @interface Type {
-
}
-
// 参数使用Type类型
-
public static void show(@Type int type) {
-
}
-
// 正确的调用
-
public static void show1() {
-
show(ImagePreviewActivity.VIEW);
-
}
-
// 错误的调用
-
public static void show2() {
-
show(2);
-
}
-
// 定义Type类型的变量
-
@Type int mType;
-
public void f() {
-
// 正确的赋值操作
-
mType = ImagePreviewActivity.VIEW;
-
// 错误的赋值操作
-
mType = 0;
-
}
-
}
参考:
http://www.codeceo.com/article/why-android-not-use-enums.html
https://asce1885.gitbooks.io/android-rd-senior-advanced/content/shen_ru_qian_chu_android_support_annotations.html