在java SE5中添加了枚举类型,即enum关键字。在这之前,当你需要创建一个整形常量集时,但是这些枚举值并不会必然的将其自身的取值限制在这个常量集的范围之内,因此这样做的显得不安全,也不方便使用。现在有了enum,就解决了上述的问题。
虽然enum看起来像一张新的数据类型,事实上enum是一个类,并且也有自己的方法(toString() ordinal() static values())。在使用的时候我们可以把enum当作一种创建数据类型的方式。
枚举类型的实例是常量,因此都用大写字母表示。
1、先创建一个枚举类型
1 package enumDemo;2 /**3 * 创建enum类型4 * @author dyf5 *6 */
7 public classEnum {8 public enumtest{9 NOT,10 MILD,11 MEDIUM,12 HOT,13 FLAMING;14 }15 }
2、测试enum自己的方法(toString() ordinal() static values()),
1 package enumDemo;2 /**3 * 测试enum自己的方法toString() ordinal() static values()4 */
5 import enumDemo.Enum.test;6
7 public classTestEnum {8 public static voidmain(String[] args) {9 //-----------------------------------------------
10 /**11 * 枚举类的使用12 */
13 test e =test.MEDIUM;14 System.out.println(e);15 //-----------------------------------------------
16
17 /**18 * 创建enum时,编译器会自动添加一些有用的特性。如19 * toString 方法,显示enum实例的名字20 * ordinal() static values()方法,表示某个特定enum常量的声明顺序21 */
22 for(test t : test.values()) {23 System.out.println(t + "---ordinal---" +t.ordinal());24 }25
26 //-----------------------------------------------
27
28 }29 }
打印结果:
MEDIUM
NOT---ordinal---0
MILD---ordinal---1
MEDIUM---ordinal---2
HOT---ordinal---3
FLAMING---ordinal---4
3、enum和switch结合使用,由于switch是要在有限的可能值集合中进行选择,因此与enum正式绝佳的组合。
1 package enumDemo;2 /**3 * enum与switch结合使用4 */
5 import enumDemo.Enum.test;6
7 public classTestEnumAndSwitch {8 test t;9 publicTestEnumAndSwitch(test t){10 this.t =t;11 }12
13 public voiddescribe(){14 System.out.println("This TestEnumAndSwitch is");15 switch(t){16 case NOT: System.out.println("not spicy at all");17 break;18 case MILD: System.out.println("=========1");19 case MEDIUM: System.out.println("a little hot");20 break;21 case HOT: System.out.println("=========2");22 case FLAMING: System.out.println("=========3");23 default: System.out.println("maybe too hot");24 }25 }26
27 public static voidmain(String[] args) {28 TestEnumAndSwitch29 t1 = newTestEnumAndSwitch(test.NOT),30 t2 = newTestEnumAndSwitch(test.MEDIUM),31 t3 = newTestEnumAndSwitch(test.HOT);32 t1.describe();33 t2.describe();34 t3.describe();35 }36 }
打印结果:
This TestEnumAndSwitch is
not spicy at all
This TestEnumAndSwitch is
a little hot
This TestEnumAndSwitch is
=========2
=========3
maybe too hot