2011-09-08 77 views
0

可能重复:
Enumerations: Why? When?为什么使用枚举而不是带有静态常量的类?

我搜索了计算器上这样的问题,但用枚举的主要好处没有答案。有时我需要一些全球价值的堆,我知道枚举是更好的做法,但我不能明白为什么?

+0

另外,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,可能还有更多...... –

回答

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 枚举是编译时常量,所以它们被编译到 使用它们的客户端中。如果在两个现有常量 之间添加新常数或订单已更改,则必须重新编译客户端。如果他们不是,他们仍然会运行,但他们的行为将是不确定的。
  • 印刷 值是无信息 - 因为他们只是整数,如果打印 一出所有你得到的是一个数字,它告诉你什么什么 它代表,甚至它是什么类型。

[端报价]

相关问题