为什么没有使用枚举?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么没有使用枚举?相关的知识,希望对你有一定的参考价值。
我已经使用了相当多的Java库/ API,并且注意到static final
在任何地方都被使用,例如在android中。
为什么是这样?我知道你可以快速|
标志在一起,这可能是有用的,但你可以同样使用EnumSet
。
我特别使用android的另一个问题是有大量的无范围标志,这对于枚举来说会更干净。 For example
然后你也不能将一个类的枚举与另一个类混淆,就像使用static final int
s一样
答案
我没有找到Android项目的官方声明,但最可能的原因是:性能,特别是内存使用情况。
枚举(因为它们是Java类)需要比整数常量更多的内存。甚至官方的Android文档(曾经)都警告不要使用它们:
例如,枚举通常需要的内存是静态常量的两倍多。你应该严格避免在Android上使用枚举。
截至2017年1月的Android开发者文档“Manage Your App's Memory”
有趣的是,current version of this page(截至2019年4月)不再提及Enums。也许问题在今天不太重要。
请注意,Android SDK提供了枚举的替代方案,它还为您提供了一些编译时安全性:annotation @IntDef
。这似乎是你应该使用而不是枚举。
以上是关于为什么没有使用枚举?的主要内容,如果未能解决你的问题,请参考以下文章