从反编译的Color类中可以看出,在enum关键字的类中,第一行 (准确的说是第一个分号前) 定义的变量,都会生成一个 Color实例,且它是在静态域中进行初始化的, 而静态域在类加载阶段的cinit中进行初始化...类加载时创建,保证线程安全
从Color类中可以看出, Color对象是在静态域创建,由类加载时初始化,JVM保证线程安全,这样就能确保Color对象不会因为并发同时请求而错误的创建多个实例....它的实现比其他方式需要更多的内存空间,所以在Android这种受资源约束的设备中尽量避免使用枚举单例,而选择 双重检查锁(DCL)和静态内部类的方式实现单例....你应该严格避免在Android上使用枚举.
导致很多开发者把它当成了教条,禁止在Android上使用枚举....因此,不建议在Android中使用枚举常量,而更偏向于使用 static final来定义常量.
但是,枚举常量中有类型安全检查的功能,使用常规的实现,没有这种功能.