首页 > 代码库 > java 枚举类型 enum

java 枚举类型 enum

  在java SE5中添加了枚举类型,即enum关键字。在这之前,当你需要创建一个整形常量集时,但是这些枚举值并不会必然的将其自身的取值限制在这个常量集的范围之内,因此这样做的显得不安全,也不方便使用。现在有了enum,就解决了上述的问题。

  虽然enum看起来像一张新的数据类型,事实上enum是一个类,并且也有自己的方法(toString()  ordinal()  static values())。在使用的时候我们可以把enum当作一种创建数据类型的方式。

  枚举类型的实例是常量,因此都用大写字母表示。

1、先创建一个枚举类型

 1 package enumDemo;
 2 /**
 3  * 创建enum类型
 4  * @author dyf
 5  *
 6  */
 7 public class Enum {
 8     public enum test{
 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 class TestEnum {
 8     public static void main(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 class TestEnumAndSwitch {
 8     test t;
 9     public TestEnumAndSwitch(test t){
10         this.t = t;
11     }
12     
13     public void describe(){
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 void main(String[] args) {
28         TestEnumAndSwitch 
29             t1 = new TestEnumAndSwitch(test.NOT),
30             t2 = new TestEnumAndSwitch(test.MEDIUM),
31             t3 = new TestEnumAndSwitch(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

java 枚举类型 enum