Android中代替枚举的@IntDef用法

IntDef本身是个Android中提供的一种注解,用于替代枚举的使用

  1. 定义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;
  1. 定义一个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{}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,843评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,793评论 19 139
  • 在熙熙攘攘的大街上,一个男人用力拉扯着一个女人的头发,而多数路人只是回头看了几眼,并没有停下来帮忙;在川流不息的...
    青雨无争阅读 1,839评论 0 0
  • 大学的时候和舍友讨论,自己有了第一笔足够的钱时,是先买车还是先买房。 她当时刚考完驾照,深觉自己开车很舒服,于是坚...
    kanito阅读 2,939评论 0 0
  • 我们还是不善于表达自己的情感。 明明分外想念恋人,明明对方含情脉脉地说long time no see或者我想你,...
    KayKay0000阅读 1,573评论 0 1