JAVA:初始化及使用enum枚举类型

在使用enum之前,需要先创建一个整型常量集,但枚举值并不会取值限定在这个常量集的范围内,因此,具有一定的风险,且较难使用。


枚举类型的创建,

public enum Spiciness{
    NOT,MILD,MEDIUM,HOT,FLAMING
}

创建枚举类型时编译器会自动添加一些特性,如会自动创建toString()方法,以便你可以很方便的显示某个enum实例的名字,除此之外,还会创建ordinal()方法,用于表示某个特定enum常量的声明顺序;还有static values()方法,按照enum常量的声明,产生由这些常量构成的数组:


实例如下:

public class SimpleEnumUse {
public enum Spiciness{
	NOT,MILD,MEDIUM,HOT,FLAMING
}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Spiciness hotHot= Spiciness.MEDIUM;
		System.out.println(hotHot);
		for(Spiciness s:Spiciness.values())          //value()方法用来产生顺序数组
			System.out.println(s+",ordinal "+s.ordinal());//ordinal()方法用来声明顺序
	}
}
/* Output:
NOT,ordinal 0
MILD,ordinal 1
MEDIUM,ordinal 2
HOT,ordinal 3
*/

由此可见,可以把enum当作其他类来处理。事实上enum确实是类,而且可以用有限的可能值集合配合switch使用。

如下,

import thinkinginjava5_.SimpleEnumUse.Spiciness;
class Burrito{
	Spiciness degree;
	public Burrito(Spiciness degree) {
		// TODO Auto-generated constructor stub
		this.degree=degree;
	}
	public void describe(){
		System.out.print("This burrito is ");
		switch(degree){
		case NOT:System.out.println("not spicy at all.");
			break;
		case MILD:
		case MEDIUM:System.out.println("a little hot");
		break;
		case HOT:
		case FLAMING:System.out.println("maybe too hot");
		break;
		}
	}
}
public class SimpleEnumUse {
public enum Spiciness{
	NOT,MILD,MEDIUM,HOT,FLAMING
}
	public static void main(String[] args) {
		// TODO Auto-generated method stub		
		Burrito plain=new Burrito(Spiciness.NOT),
		greenChile=new Burrito(Spiciness.MEDIUM),
		jalapeno=new Burrito(Spiciness.HOT);
		plain.describe();
		greenChile.describe();
		jalapeno.describe();
		
	}
}
/*Output 
This burrito is not spicy at all.
This burrito is a little hot
This burrito is maybe too hot
 */



你可能感兴趣的:(java)