我搜索了计算器上这样的问题,但用枚举的主要好处没有答案。有时我需要一些全球价值的堆,我知道枚举是更好的做法,但我不能明白为什么?
0
A
回答
1
Java语言指南lists several ways in which using integer constants for enumerated types is inferior to using enums。我引述:
在以前的版本,来表示一个枚举类型的标准方式是INT枚举模式:
// int Enum Pattern - has severe problems!
public static final int SEASON_WINTER = 0;
public static final int SEASON_SPRING = 1;
public static final int SEASON_SUMMER = 2;
public static final int SEASON_FALL = 3;
该图案具有很多问题,如:
- 不类型安全 - 由于一个季节只是一个整数,你可以在任何需要季节的时候通过任何 其他整数值,或者将两个季节 加在一起(这是没有意义的)。
- 没有命名空间 - 你必须前缀一个int枚举 常量用于字符串(在这种情况下SEASON_)与其他INT枚举类型 避免冲突。
- 脆性 - 因为int 枚举是编译时常量,所以它们被编译到 使用它们的客户端中。如果在两个现有常量 之间添加新常数或订单已更改,则必须重新编译客户端。如果他们不是,他们仍然会运行,但他们的行为将是不确定的。
- 印刷 值是无信息 - 因为他们只是整数,如果打印 一出所有你得到的是一个数字,它告诉你什么什么 它代表,甚至它是什么类型。
[端报价]
-1
页面http://well-spun.co.uk/code_templates/enums.php可以生成在C++,Java或PHP类型安全枚举的代码。它使用静态。
相关问题
- 1. 为什么枚举编译为常量而不是静态值?
- 2. 为什么要使用枚举而不是常量?
- 3. 为什么Phobos使用枚举常量?
- 4. 为什么使用静态“常量”而不是实际值?
- 5. 为什么`std :: byte`是一个枚举类而不是类?
- 6. 为什么使用字符串常量与枚举常量?
- 7. Java枚举与静态常量
- 8. 带数字常量的枚举类型
- 9. Java枚举,静态类变量 - 为什么我不能这样做?
- 10. 枚举为int,为什么使用类型转换为int而不是Convert.ToInt32(Enum)?
- 11. 枚举:使用枚举和类与静态变量之间的区别
- 12. 为什么使用singleton而不是静态类?
- 13. 在枚举上使用NSString常量的原因是什么?
- 14. 使用不带变量名的枚举
- 15. 为什么Java不允许开启静态枚举?
- 16. 为什么BCL集合使用结构枚举器而不是类?
- 17. 动态加载Java枚举类和枚举常量
- 18. 如果你总是用枚举,而不是常量在Java中
- 19. 为什么AbstractFactoryUnit具有动态而不是静态多态?
- 20. 如何将现有静态常量包装到枚举中?
- 21. MSVC常量枚举类型
- 22. 静态valueOf()方法的要点是什么? (枚举)
- 23. Java7/WatchEvent - 为什么它不是枚举?
- 24. 为什么Collections.enumeration附带枚举()方法
- 25. 为什么Java枚举常量初始化不完整?
- 26. 带常量的单例枚举
- 27. 枚举常量
- 28. 如何每次使用枚举而不指定枚举类?
- 29. WPF的ObjectDataProvider与静态类枚举
- 30. Msbuild.exe中的静态枚举类错误
另外,http://stackoverflow.com/questions/5107946/enumerations-vs-int-flags,http://stackoverflow.com/questions/2077634/enum-in-java-advantages,http:// stackoverflow .com/questions/4709175/why-and-what-for-java-enum,可能还有更多...... –