美文网首页
使用IntDef替代枚举

使用IntDef替代枚举

作者: 哦嘿嘿哈哈吼 | 来源:发表于2017-02-13 18:18 被阅读0次

Google开发者文档中说过

enums often require more than twice as much memory as static constants. You should strictly avoid using enums on Android.

即定义枚举会比定义静态常量多花费2倍以上的内存,那么想要限制他人使用特定的枚举值,又不使用枚举该怎么办么?

答案是使用@IntDef@StringDef,使用这两个注解需要先在build.gradle中添加依赖:
compile 'com.android.support:support-annotations:25.0.1'

使用方法很简单,首先定义你需要的常量,然后用@IntDef@StringDef包住这些常量,这样别人在使用你的方法时如果输入的值不在枚举的范围内,编译器就会给出提示了。

public static final int TYPE_MI = 1;
public static final int TYPE_MEIZU = 2;
public static final int TYPE_HUAWEI = 3;

@Retention(RetentionPolicy.SOURCE)
@IntDef({TYPE_MI, TYPE_MEIZU, TYPE_HUAWEI})
public @interface MOBILE_TYPE {
}

public static final String TYPE_HD = "720p";
public static final String TYPE_SHD = "1080p";
public static final String TYPE_FHD = "4k";

@Retention(RetentionPolicy.SOURCE)
@StringDef({TYPE_HD, TYPE_SHD, TYPE_FHD})
public @interface DISPLAY_TYPE {
}

public void doSomething(@MOBILE_TYPE int mobile, @DISPLAY_TYPE String display) {
}

相关文章

  • 注解代替枚举案例 2019-01-25

    title: 注解代替枚举案例 20180312 参考: @IntDef的使用(替代枚举) 使用情形:比如 对 a...

  • 使用IntDef替代枚举

    Google开发者文档中说过 enums often require more than twice as muc...

  • 查阅资料

    @IntDef的使用(替代枚举) 注解: java 集合 [https://blog.csdn.net/zhang...

  • 性能

    @IntDef替代枚举 @IntDef/@StringDef本身是个Android中提供的一种注解. 添加依赖:c...

  • 替代枚举的注解

    Android中新引入的替代枚举的注解有IntDef和StringDef,这里以IntDef做例子说明一下.

  • apt相关学习资料

    【Android开发@IntDef完美替代Enum (枚举)】https://www.jianshu.com/p/...

  • Android中代替枚举的@IntDef用法

    IntDef本身是个Android中提供的一种注解,用于替代枚举的使用 定义static final的常量 定义一...

  • 枚举 学习笔记

    android 中 我们通常推荐使用 @IntDef 等 代替使用 枚举,很多同学有疑问,为什么抛弃 枚举。我们现...

  • 浅谈Android中@IntDef注解的使用

    上回书说到Android中推荐使用@IntDef代替枚举类型。 那么今天的主题就是来浅浅的了解一下@IntDef注...

  • Android开发@IntDef完美替代Enum (枚举)

    概要 Enum 是 java 中一种包含固定常数的类型,当我们需要预先定义一些值时,我们使用 Enum,这样做通常...

网友评论

      本文标题:使用IntDef替代枚举

      本文链接:https://www.haomeiwen.com/subject/cadtwttx.html