码迷,mamicode.com
首页 > 编程语言 > 详细

java 枚举

时间:2015-11-29 10:45:43      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

一、为什么使用枚举

    在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。

面对这样的常量我们往往使用 public   final   static   去定义,而使用Enum枚举类型,可以将以前笨拙的代码变得优雅简单!

二、枚举的特点

   1.枚举类型的每一个值都将映射到 protected Enum(String name, int ordinal) 构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数设置表示了此设置被创建的顺序。

   2.他是个普通的类,它已经继承了Enum (java 是单继承)所以他不能继承其他类了。

 

 1 public enum EnumTest {
 2     //使用枚举定义常量
 3     RED(1), GREEN(2) , YELLOW(3) ;
 4     private int code;
 5     // 构造函数,枚举类型只能为私有
 6     private EnumTest(int code){
 7         this.code=code;
 8     }
 9     public String toString(){
10         return String.valueOf(this.code);
11     }
12      /**
13      *   演示枚举类型的遍历
14      */
15     private static void testTraversalEnum() {
16         EnumTest[] enumTest = EnumTest.values ();
17        for (EnumTest eEnumTest : enumTest) {
18           System. out .println( " 当前灯 name : " + eEnumTest.name());
19           System. out .println( " 当前灯: " + eEnumTest);
20           System. out .println( " 当前灯 ordinal : " + eEnumTest.ordinal());
21       }
22    }
23     /**
24      *   演示 EnumMap 的使用, EnumMap 跟 HashMap 的使用差不多,只不过 key 要是枚举类型
25      */
26     private static void testEnumMap() {
27        // 1. 演示定义 EnumMap 对象, EnumMap 对象的构造函数需要参数传入 , 默认是 key 的类的类型
28       EnumMap<EnumTest, String> currEnumMap = new EnumMap<EnumTest, String>(EnumTest.class );
29       currEnumMap.put(EnumTest.RED , "红灯");
30       currEnumMap.put(EnumTest.GREEN , "绿灯");
31       currEnumMap.put(EnumTest.YELLOW , "黄灯");
32        // 2. 遍历对象
33        for (EnumTest aEnumTest : EnumTest.values ()) {
34           System. out .println( "[key=" + aEnumTest.name() + ",value="+ currEnumMap.get(aEnumTest) + "]" );
35       }
36    }
37     /**
38      *   演示 EnumSet 如何使用, EnumSet 是一个抽象类,获取一个类型的枚举类型内容 <BR/>
39      *   可以使用 allOf 方法
40      */
41     private static void testEnumSet() {
42       EnumSet<EnumTest> currEnumSet = EnumSet.allOf (EnumTest.class );
43        for (EnumTest aEnumTestSetElement : currEnumSet) {
44           System. out .println( " 当前 EnumSet 中数据为: " + aEnumTestSetElement);
45       }
46    }
47     /**
48      * switch与enum的结合使用  
49      */
50     private static void testsWitch() {
51         EnumTest switchState = EnumTest.RED;  
52         switch (switchState) {  
53         case RED:  
54             System.out.println("RED");  
55             break;  
56         case GREEN:  
57             System.out.println("GREEN");  
58             break;  
59         default:
60             System.out.println("YELLOW");  
61             break;  
62         }
63      }
64     public static void main(String[] args) {
65         testTraversalEnum();
66         testEnumMap();
67         testEnumSet();
68         testsWitch();
69     }
70 }

 

java 枚举

标签:

原文地址:http://www.cnblogs.com/jalja/p/5004388.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!