您的浏览器不支持CSS3,建议使用Firfox、Chrome等浏览器,以取得最佳显示效果

Android中用IntDef、StringDef注解代替Enum枚举类型

Android 1,859℃ 0 2年前 (2016-05-18)

写代码时,常用到Java中的枚举类型,枚举可以对常量进行限制,有效避免代码出错。但是在Android中,枚举类型的性能较差。

可以利用Android的IntDef、StringDef注解(Annotation),用int、String实现类似枚举的效果。

需要在项目中增加一条依赖项:

  1. compile 'com.android.support:support-annotations:20.0.0'

IntDef的使用示例如下,StringDef的用法类似。调用错误时,AndroidStudio会报错如下。这里注解起到的只是检查代码的作用,对实际编译并没有什么影响。

  1. public class ImagePreviewActivity {
  2. public static final int VIEW = 1;
  3. public static final int SELECT = 2;
  4. public static final int DELETE = 3;
  5. // 定义Type类型
  6. @IntDef({VIEW, SELECT, DELETE})
  7. public @interface Type {
  8. }
  9. // 参数使用Type类型
  10. public static void show(@Type int type) {
  11. }
  12. // 正确的调用
  13. public static void show1() {
  14. show(ImagePreviewActivity.VIEW);
  15. }
  16. // 错误的调用
  17. public static void show2() {
  18. show(2);
  19. }
  20. // 定义Type类型的变量
  21. @Type int mType;
  22. public void f() {
  23. // 正确的赋值操作
  24. mType = ImagePreviewActivity.VIEW;
  25. // 错误的赋值操作
  26. mType = 0;
  27. }
  28. }

参考:
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

来自为知笔记(Wiz)

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

0

暂无评论

评论前:需填写以下信息,或 登录

用户登录

忘记密码?