Chapter5_初始化与清理_enum关键字

时间:2023-03-09 05:12:42
Chapter5_初始化与清理_enum关键字

  enum关键字虽然只是一个很小的特性,但是它在我们使用枚举类型时,可以很方便的处理。先举一个例子。

 enum Speciness{
NOT, MILD, MEDIUM, HOT, FLAMING
} public class test{
public static void main(String args[]){
Speciness howHot = Speciness.MEDIUM;
System.out.println(howHot);
}
}
MEDIUM

  可以看到,枚举类型也是一种特定的类型,可以创建这个类的实例,在这一点上它和其他的类并没有区别,但是枚举类型有几个实用 的特性。它会创建toString()方法,可以方便的显示某个枚举类型实例的常量值,另外还会创建ordinal()方法,表示某个枚举常量的声明顺序,以及static value()方法,按照枚举类型的创建顺序,产生由这些常量值构成的数组(还是枚举类型的)。

 enum Speciness{
NOT, MILD, MEDIUM, HOT, FLAMING
} public class test{
public static void main(String args[]){
for(Speciness s : Speciness.values())
System.out.println(s + " " + s.ordinal());
}
}

NOT 0 MILD 1 MEDIUM 2 HOT 3 FLAMING 4

  enum类型的另一个很有用的方式就是与switch语句相结合起来使用,根据不同的枚举类型来产生不同的行为。

 enum Nationality{
Spain,Italy,France
} public class test{
Nationality n;
String name;
test(Nationality n, String name){
this.n = n;
this.name = name;
}
public void describe(){
switch(this.n){
case France:
System.out.println(name + ":paris");
break;
case Italy:
System.out.println(name + ":milan");
break;
case Spain:
System.out.println(name + ":madrid");
break;
default:
break; }
} public static void main(String args[]){
test
t1 = new test(Nationality.Spain, "RMA"),
t2 = new test(Nationality.France, "PSG"),
t3 = new test(Nationality.Italy, "INTER");
t1.describe();
t2.describe();
t3.describe();
}
}

RMA:madrid PSG:paris INTER:milan