首先,为了探究枚举的原理,我们先简单定义一个枚举类,这里以季节为例,类名为Season,包含春夏秋冬四个枚举条目.
public enum Season {
SPRING,
SUMMER...,
AUTUMN,
WINTER
}
然后我们使用javac编译上面的类,得到class文件.
javac Season.java
然后,我们利用反编译的方法来看看字节码文件究竟是什么....既然隐式继承自java.lang.enum,也就意味java代码中,Season不能再继承其他的类
Season被标记成了final,意味着它不能被继承
static代码块
使用javap具体反编译class文件...配置如下
-optimizations class/unboxing/enum
确保上述代码生效,需要确proguard配置文件不包含-dontoptimize指令。...(Android中)该不该用枚举
既然上面提到了枚举会转换成类,这样理论上造成了下面的问题
增加了dex包的大小,理论上dex包越大,加载速度越慢
同时使用枚举,运行时的内存占用也会相对变大
关于上面两点的验证