我正在对枚举进行一些阅读,发现它们与声明常量非常相似.我怎么知道何时使用常量而不是枚举,反之亦然.使用枚举有哪些优点?
我过去常常Bundle
在如下界面中定义一组相关常量(如键):
public interface From{
String LOGIN_SCREEN = "LoginSCreen";
String NOTIFICATION = "Notification";
String WIDGET = "widget";
}
Run Code Online (Sandbox Code Playgroud)
这为我提供了一种更好的方法来将相关常量组合在一起并通过静态导入(而不是实现)来使用它们.我知道Android
框架也使用常数在同样的方式一样Toast.LENTH_LONG
,View.GONE
.
但是,我经常觉得Java Enums
提供更好,更强大的方式来表示常数.
但是,有没有在使用性能自动问题enums
上Android
?
通过一些研究,我最终陷入困惑.从Android的性能提示Google
中删除了"避免使用只需要Ints的枚举"的问题
吗?显然已经从其性能提示中删除了"避免枚举",但是从它的官方培训文档中了解内存开销部分它清楚地说:"枚举通常需要的内存是静态常量的两倍多.你应该严格避免在Android上使用枚举."这仍然很好吗?(Java
在1.6之后的版本中说)
我观察到的一个问题,更是发送enums
跨intents
使用Bundle
我应该序列化给他们(即putSerializable()
,我认为一个昂贵的操作比较原始的putString()
方法沉绵enums
提供它是免费的).
有人可以澄清哪一个是代表相同的最佳方式Android
?我应该严格避免使用enums
的Android
?
正如Knuth所说,
我们应该忘记小的效率,大约97%的时间说:过早的优化是所有邪恶的根源.
这是Stack Overflow常常出现的问题,例如"哪个是最有效的循环机制","SQL优化技术?"等问题.(等等).这些优化提示问题的标准答案是分析您的代码并首先查看它是否是一个问题,如果不是,那么您的新技术就不再需要了.
我的问题是,如果某种技术不同但不是特别模糊或混淆,那真的可以被认为是过早的优化吗?
这是Randall Hyde的一篇名为"过早优化的谬误"的相关文章.