ENUM 中的每一个值都是一个 Object,它的每个声明都会占用运行时的部分内存以便能够引用到这个 Object。因此 ENUM 的值会比对应的 Integer 和 String 所占用的内存多。在 Android 之前的版本中 (<=2.2),存在着关于 ENUM 引起的性能问题,这个问题在 JIT 编译器中解决了。 添加一个 ENUM 将会增大最终的 DEX 文件(Integer 常量的 13 倍大)。并且会引起运行时的过度开销,你的应用也会占用更多的空间。 解决办法 Android 提供了注解库,其中有 TypeDef 注解。这些注解能够确保一个特定的参数,返回值或者字段能够在特别一组常量中引用一个。它们能确保自动完成允许的常量中选择一个。