Java中的枚举类型-1:基本用法

枚举是java 5开始支持的新特性,其作用是将一组相关的常量定义在一个类型中,这样在使用时就只能使用这些有限的常量。先定义一个代表一周七天的枚举类型作为范例:

java代码

enum weekday {

sunday, monday, tuesday, wednsday, thursday, friday, saturday

};

enum weekday {

sunday, monday, tuesday, wednsday, thursday, friday, saturday

};

这样就定义好了一个weekday枚举类型,注意最后的分号是可以省略的。因为weekday中只有7个成员,所以weekday的变量只能取其中一个值,例如:

java代码

weekday wd = weekday.monday;

weekday wd = weekday.monday;

这样看起来枚举类型似乎很简单,其实它本质上是一个类,其隐含的父类是java.lang.enum,所以weekday自动继承了enum的方法,其中有两个挺有用,一个叫ordinal(),返回成员的声明顺序编号,这是一个整数,值从0开始编号,比如weekday.sunday.ordinal()返回0,而weekday.monday.ordinal()返回1。另一个方法叫做name(),返回枚举成员的名称。

更有意思的是,枚举类型可以直接用于switch语句,这个功能看起来是突破了java中switch只能用于整数和字符的限制,不过其实是java编译器的障眼法,java编译器会自动在枚举成员上调用ordinal()方法,例如:

java代码

weekday wd = weekday.friday;

switch (wd) {

case monday:

system.out.println("这个星期才刚开始,慢慢等吧");

break;

...

case friday:

system.out.println("周末来了,好好享受吧");

break;

...

}

weekday wd = weekday.friday;

switch (wd) {

case monday:

system.out.println("这个星期才刚开始,慢慢等吧");

break;

...

case friday:

system.out.println("周末来了,好好享受吧");

break;

...

}

如果像遍历weekday,那么可以使用它隐含的静态方法values(),这个方法在文档中找不到定义,是java编译器自己加上去的,很奇怪! 例如:

java代码

for (weekday wd : weekday.values()) {

system.out.println(wd + ", 顺序: " + wd.ordinal());

}

for (weekday wd : weekday.values()) {

system.out.println(wd + ", 顺序: " + wd.ordinal());

}

以上是枚举的基本用法,实际上枚举本身要复杂的多,比如可以定义构造函数,定义字段,定义和重写方法,甚至可以在枚举的常量中重写枚举中的方法,这些内容将在下一篇文章中介绍。


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值