java 中枚举类型的用法
来源:互联网 发布:软件开发计划书模板 编辑:程序博客网 时间:2024/05/22 00:43
枚举是Java 5开始支持的新特性,其作用是将一组相关的常量定义在一个类型中,这样在使用时就只能使用这些有限的常量。先定义一个代表一周七天的枚举类型作为范例:
- enum Weekday {
- SUNDAY, MONDAY, TUESDAY, WEDNSDAY, THURSDAY, FRIDAY, SATURDAY
- };
enum Weekday { SUNDAY, MONDAY, TUESDAY, WEDNSDAY, THURSDAY, FRIDAY, SATURDAY};
这样就定义好了一个Weekday枚举类型,注意最后的分号是可以省略的。因为Weekday中只有7个成员,所以Weekday的变量只能取其中一个值,例如:
- 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()方法,例如:
- 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编译器自己加上去的,很奇怪! 例如:
- for (Weekday wd : Weekday.values()) {
- System.out.println(wd + ", 顺序: " + wd.ordinal());
- }
for (Weekday wd : Weekday.values()) { System.out.println(wd + ", 顺序: " + wd.ordinal());}
以上是枚举的基本用法,实际上枚举本身要复杂的多,比如可以定义构造函数,定义字段,定义和重写方法,甚至可以在枚举的常量中重写枚举中的方法,这些内容将在下一篇文章中介绍。
- java 中枚举类型的用法
- java中枚举类型Enum的用法
- java枚举类型的用法
- java中枚举类型enum的简单用法
- Java中枚举类型Enum的用法介绍
- java中关于枚举enum类型的用法
- Java中enum枚举类型用法总结
- C++中枚举类型的用法
- java枚举类型的基本用法
- Java的枚举类型用法介绍
- Java的枚举类型用法介绍
- Java的枚举类型用法介绍
- java中枚举的用法
- java中枚举的用法
- 枚举类型的用法
- 枚举类型的用法
- 枚举类型的用法
- 枚举类型的用法
- oracle存储过程
- 用递归列出文件夹所有文件夹和文件
- 创建IE各版本专属CSS IE中的if语句
- Asp.NET生成静态页面并分页
- key-value数据库
- java 中枚举类型的用法
- 遍历指定目录下的所有文件
- "Hello, HTML"!
- hbase单机终于跑起来了
- How do I restart Linux network service?
- 进程间通信----管道
- SQLServer中游标实例介绍
- Flex企业应用开发实践学习笔记(八)——Flex on Java企业应用架构
- SAXParseException : Premature end of file