深入理解枚举enum类型,以及为什么不建议在Android中使用enum
简单来说enum的产物是一个类,每个枚举值是它下面的的一个static final值,除此之外,还维护了String、数组等对象。运行时所占用的内存非常大。
每一个枚举值都是一个单例对象,在使用它时会增加额外的内存消耗,所以枚举相比与 Integer 和 String 会占用更多的内存
较多的使用 Enum 会增加 DEX 文件的大小,会造成运行时更多的IO开销,使我们的应用需要更多的空间
特别是分dex多的大型APP,枚举的初始化很容易导致ANR。
说是不推荐使用,但没有说强制不使用Java枚举,当我们使用时,我们是需要用到枚举类型的特定的,比如
推荐使用的场景:
-
类型检查-----------类型检查本来就是枚举的唯一特点,及优势,表明你的函数是只需要接受列出的值(枚举的值),并且他们是不连续的
-
方法重载,每个类型要进行方法的重载
比如下面这段代码,使用枚举是很推荐的:
public enum UnitConverter{
METERS{
@Override
public double toMiles(final double meters){
return meters * 0.00062137D;
}
@Override
public double toMeters(final double meters){
return meters;
}
},
MILES{
@Override
public double toMiles(final double miles){
return miles;
}
@Override
public double toMeters(final double miles){
return miles / 0.00062137D;
}
};
public abstract
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享