A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高境 金牌黑马   /  2013-1-7 12:52  /  2206 人查看  /  9 人回复  /   3 人收藏 转载请遵从CC协议 禁止商业使用本文

枚举在Java开发中给开发者带来了很大的方便,本文将给大家介绍Java枚举七种常见的用法

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

用法一:常量

在JDK1.5 之前,我们定义常量都是: public static fianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。
  1. public enum Color
  2. {   
  3. RED, GREEN, BLANK, YELLOW  
  4. }
复制代码

用法二:switch


JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。
  1. enum Signal
  2. {      
  3.   GREEN, YELLOW, RED  
  4. }  
  5. public class TrafficLight
  6. {      
  7. Signal color = Signal.RED;
  8. public void change()
  9. {         
  10. switch (color)
  11. {         
  12. case RED:              
  13. color = Signal.GREEN;              
  14. break;         
  15. case YELLOW:              
  16. color = Signal.RED;              
  17. break;         
  18. case GREEN:            
  19. color = Signal.YELLOW;              
  20. break;         
  21. }      
  22. }  
  23. }
复制代码
用法三:向枚举中添加新方法

如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。
  1. public enum Color
  2. {      
  3. RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
  4. // 成员变量      
  5. private String name;      
  6. private int index;
  7. // 构造方法      
  8. private Color(String name, int index)
  9. {         
  10. this.name = name;         
  11. this.index = index;      
  12. }      
  13. // 普通方法      
  14. public static String getName(int index)
  15. {         
  16. for (Color c : Color.values())
  17. {              
  18. if (c.getIndex() == index)
  19. {                  
  20. return c.name;              
  21. }         
  22. }         
  23. return null;     
  24. }      
  25. // get set 方法     
  26. public String getName()
  27. {         
  28. return name;      
  29. }      
  30. public void setName(String name)
  31. {         
  32. this.name = name;      
  33. }      
  34. public int getIndex()
  35. {         
  36. return index;      
  37. }      
  38. public void setIndex(int index)
  39. {         
  40. this.index = index;      
  41. }  
  42. }
复制代码
用法四:覆盖枚举的方法

下面给出一个toString()方法覆盖的例子。
  1. public enum Color
  2. {      
  3. RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);      
  4. // 成员变量      
  5. private String name;      
  6. private int index;      
  7. // 构造方法      
  8. private Color(String name, int index)
  9. {         
  10. this.name = name;         
  11. this.index = index;      
  12. }      
  13. //覆盖方法      
  14. @Override     
  15. public String toString()
  16. {         
  17. return this.index+"_"+this.name;      
  18. }  
  19. }
复制代码

用法五:实现接口


所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。
  1. public interface Behaviour
  2. {      
  3. void print();      
  4. String getInfo();  
  5. }  
  6. public enum Color implements Behaviour
  7. {      
  8. RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);      
  9. // 成员变量      
  10. private String name;     
  11. private int index;      
  12. // 构造方法      
  13. private Color(String name, int index)
  14. {         
  15. this.name = name;         
  16. this.index = index;      
  17. }  
  18. //接口方法      
  19. @Override     
  20. public String getInfo()
  21. {         
  22. return this.name;     
  23. }      
  24. //接口方法      
  25. @Override     
  26. public void print()
  27. {         
  28. System.out.println(this.index+":"+this.name);      
  29. }  
  30. }
复制代码
用法六:使用接口组织枚举
  1. public interface Food
  2. {      
  3. enum Coffee implements Food
  4. {         
  5. BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO      
  6. }      
  7. enum Dessert implements Food
  8. {         
  9. FRUIT, CAKE, GELATO      
  10. }  
  11. }
复制代码
用法七:关于枚举集合的使用

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


评分

参与人数 3黑马币 +76 收起 理由
怪盗急得 + 30
Fateˉ似命守护 + 40
Rancho_Gump + 6 赞一个!

查看全部评分

9 个回复

倒序浏览
谢版主分享,学习了。。
回复 使用道具 举报
讲的很详细,学习了。

评分

参与人数 1黑马币 +30 收起 理由
高境 + 30

查看全部评分

回复 使用道具 举报
{:soso_e179:}

评分

参与人数 1黑马币 +120 收起 理由
高境 + 120

查看全部评分

回复 使用道具 举报
{:soso_e179:}哎呦不错哦
回复 使用道具 举报
嗯,讲得真详细,认真mark学习!
回复 使用道具 举报
高境 金牌黑马 2013-1-10 12:03:48
7#
{:soso_e200:}
回复 使用道具 举报
信息量好大啊。我需要跑步前进了。
回复 使用道具 举报
{:soso_e179:}
回复 使用道具 举报
{:soso_e179:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马