enum关键字虽然只是一个很小的特性,但是它在我们使用枚举类型时,可以很方便的处理。先举一个例子。
1 enum Speciness{ 2 NOT, MILD, MEDIUM, HOT, FLAMING 3 } 4 5 public class test{ 6 public static void main(String args[]){ 7 Speciness howHot = Speciness.MEDIUM; 8 System.out.println(howHot); 9 } 10 }
MEDIUM
可以看到,枚举类型也是一种特定的类型,可以创建这个类的实例,在这一点上它和其他的类并没有区别,但是枚举类型有几个实用 的特性。它会创建toString()方法,可以方便的显示某个枚举类型实例的常量值,另外还会创建ordinal()方法,表示某个枚举常量的声明顺序,以及static value()方法,按照枚举类型的创建顺序,产生由这些常量值构成的数组(还是枚举类型的)。
1 enum Speciness{ 2 NOT, MILD, MEDIUM, HOT, FLAMING 3 } 4 5 public class test{ 6 public static void main(String args[]){ 7 for(Speciness s : Speciness.values()) 8 System.out.println(s + " " + s.ordinal()); 9 } 10 }
1 NOT 0 2 MILD 1 3 MEDIUM 2 4 HOT 3 5 FLAMING 4
enum类型的另一个很有用的方式就是与switch语句相结合起来使用,根据不同的枚举类型来产生不同的行为。
1 enum Nationality{ 2 Spain,Italy,France 3 } 4 5 public class test{ 6 Nationality n; 7 String name; 8 test(Nationality n, String name){ 9 this.n = n; 10 this.name = name; 11 } 12 public void describe(){ 13 switch(this.n){ 14 case France: 15 System.out.println(name + ":paris"); 16 break; 17 case Italy: 18 System.out.println(name + ":milan"); 19 break; 20 case Spain: 21 System.out.println(name + ":madrid"); 22 break; 23 default: 24 break; 25 26 } 27 } 28 29 public static void main(String args[]){ 30 test 31 t1 = new test(Nationality.Spain, "RMA"), 32 t2 = new test(Nationality.France, "PSG"), 33 t3 = new test(Nationality.Italy, "INTER"); 34 t1.describe(); 35 t2.describe(); 36 t3.describe(); 37 } 38 }
1 RMA:madrid 2 PSG:paris 3 INTER:milan