Java枚举的七种常见用法

伯乐在线注:本文来自文章作者@i李小武 的投稿(原文)。

JDK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。

用法一:常量

在JDK1.5 之前,我们定义常量都是: public static fianl…. 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。

用法二:switch

JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。

用法三:向枚举中添加新方法

如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum实例。

用法四:覆盖枚举的方法

下面给出一个toString()方法覆盖的例子。

用法五:实现接口

所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。

用法六:使用接口组织枚举

用法七:关于枚举集合的使用

java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的key是enum类型,而value则可以是任意类型。关于这个两个集合的使用就不在这里赘述,可以参考JDK文档。

关于枚举的实现细节和原理请参考:参考资料:《Thinking In Java》第四版

 

3 收藏 2 评论

相关文章

可能感兴趣的话题



直接登录
最新评论
  • 书里有更为详细的介绍。更希望作者能列出一些枚举常用的场景,现在项目里有些东西不知道该不该写成枚举类型,目前全是硬编码,感觉很难受。

  • Qucy_ SSE 2013/01/08

    1.大部分场合下推荐用enum代替int型常量,但是在一些资源有约束的场景中仍然推荐使用int型常量(比如手机).因为enum的cost会高于int.
    2.Effective java 中并不是很推荐在enum中使用switch,这样的代码作者认为是fragile的.因为如果在后续的开发中漏掉了一个case的话,complier并不会帮我们有效的检查出错误.推荐做法是用abstract method或interface来实现多态的问题.这样如果上面的情况发生的话,complier会帮我们找到错误.(在更复杂的场景中作者使用了nested enum来实现)
    3.推荐每次都override toString方法.这样会使我们的enum变得更有意义.如果可以的话写一个反向的fromString方法.
    4.在某些特定的情况下可以使用EnumSet和EnumMap两个集合.具体方法请参照Effective Java.

跳到底部
返回顶部