枚举类型

这是Java SE5中添加的一个新特性,enum关键字

表示以前编写代码的时候从来没有用过。。。但感觉这东西应该挺方便的,比如需要创建一个常量集的时候,看一个书上的例子

public class Test {
	public static void main(String[] args) {
		
		for(Spiciness s : Spiciness.values())
		{
			System.out.println(s + ", ordinal " + s.ordinal());
		}
	}
}
enum Spiciness
{
	NOT, MILD, MEDIUM, HOT,FLAMING
}
输出结果为

NOT, ordinal 0
MILD, ordinal 1
MEDIUM, ordinal 2
HOT, ordinal 3
FLAMING, ordinal 4
这里面的 Spiciness就是一个常量的集合,很像一个数组 Spiciness.values()返回的就是一个组数, s.ordinal()表示其中的位置,类似数组下标也是从0开始。如果一定要用下标取值的话就用 Spiciness.values()[1]类似这样来用,不过有点多余

尽管enum看起来像是一种新的数据类型,但是这个关键字只是为enum生成对应的类时,产生某些编译器行为,因此在很大程度上,可以将enum当做其他任何数据类型来处理。事实上enum确实是类,并且有自己的方法。

下面这个例子比较有意思,enum可以在switch语句内使用

public class Test {
	public static void main(String[] args) {
		describe(Spiciness.HOT);
	}
	
	public static void describe(Spiciness s)
	{
		int index = 0;
		switch (s) {
		case NOT:
			
			break;
		case MILD:
			index = 1;
			break;
		case MEDIUM:
			index = 2;
			break;
		case HOT:
			index = 3;
			break;
		case FLAMING:
			index = 4;
			break;
		default:
			index = 5;
			break;
		}
		System.out.println("index: " + index);
		System.out.println(Spiciness.values()[index]);
	}
}

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

输出结果为

index: 3
HOT
由于 switch是要在有限的可能值集合中进行选择,因此它与 enum是绝佳的组合。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值