使用@IntDef替代枚举

本文探讨了枚举(enum)与静态常量(static constants)在内存使用上的区别,指出枚举可能会占用更多内存资源。建议在Android开发中谨慎使用枚举,并介绍了IntDef注解作为替代方案,用于提供编译期类型检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

依据:
Enums often require more than twice as much memory as static constants. You should strictly avoid using enums on Android
枚举比静态常量用更多的内存,慎用

解决方案:
官方推出了两个注解,IntDef和StringDef,用来提供编译期的类型检查,如果输入类型错误,编译器就会提示报错,但仍可以运行。因为代码本身是RetentionPolicy.SOURCE级别的,只能给代码检查工具使用。

demo:
定义intDef

public class LoadType {
    public static final int TYPE_REFRESH_SUCCESS = 1;
    public static final int TYPE_REFRESH_ERROR = 2;
    public static final int TYPE_LOAD_MORE_SUCCESS = 3;
    public static final int TYPE_LOAD_MORE_ERROR = 4;

    @IntDef({TYPE_REFRESH_SUCCESS, TYPE_REFRESH_ERROR, TYPE_LOAD_MORE_SUCCESS, TYPE_LOAD_MORE_ERROR})
    @Retention(RetentionPolicy.SOURCE)
    public @interface checker {
    }
}

使用

      void setKnowledgeSystemArticles(Article article, @LoadType.checker int loadType);

如果变换对应的数据类型或者值 就会提示报错,如:
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值