(1)简单的例子
JDK5.0的枚举,正好可以解决上面我们讨论的问题,而且更简洁。还是用上面的代码做示例,只需要将Color类修改如下,Flower、Client都无法更改。
java 代码
- public enum Color { RED, BLACK, YELLOW, BLUE, WHITE, ORANGE}
接下来我们做更深一步的说明:
- 所有枚举类都是java.lang.Enum的子类(JDK内核自动将Color隐性继承自Enum)
- RED...ORANGE都是Color的实例对象
上面的Color枚举类,功能好象还和以前的例子不完全一样,我们再次修改如下。
java 代码
- public enum Color {
- RED(0), BLACK(1), YELLOW(2), BLUE(3), WHITE(4), ORANGE(5);
- int color;
- Color(int color){
- this.color=color;
- }
- public int getColorValue(){
- return color;
- }
- }
从这里我们可以看到枚举类是如何创建构造函数及方法的,有一些隐性的东西要说明一下:
- 枚举类的构造函数要求是private的,如果象例子里那样不加修饰符,则Java会自动给加上。但如果你想加上public则会报错。
- RED(0), BLACK(1)...等枚举值必须定义在前面,而且最后一个枚举值ORANGE(5);未尾用分号结束。
(2)在循环中使用枚举类
枚举类都有一个values方法可以得到它值的数组:Color[] colors=Color.values();而且枚举类都支持泛型
(以后的文章会重点说到),所以我们可以这样来遍历这个数组:
Color[] colors = Color.values();
for (Color c : colors) {
System.out.println("color value=" + c.getColorValue());
}
(3)在switch(分支)中使用枚举
如下代码示例,这里要注意将“case RED:”写成“case Color.RED:”是会报错的,因为JDK5.0可以自动根据
“switch (color)”就判断入你要使用什么枚举类型了。从这里也可以看出JDK5.0确实为用户做了帖心的考虑,尽量让程序员少写代码,写更简单的代码。
Color color = Color.RED;
switch (color) {
case RED:
//process ...
break;
case BLACK:
//process ...
break;
case WHITE:
//process ...
break;
default:
//process ...
}
(4)JDK5.0新增的集合:EnumMap 和EnumSet
给出两个例子,一切尽在不言中了。(说明:这两个例子用到了JDK5.0中泛型的知识)
Map map = new EnumMap(Color.class);
map.put(Color.RED, "红色");
map.put(Color.BLACK, "黑色");
map.put(Color.WHITE, "白色");
for (Color c : Color.values()) {
System.out.println(c + " chinese is: " + map.get(c));
}
Set all = EnumSet.allOf(Color.class);
EnumSet warmColors = EnumSet.of(Color.RED, Color.YELLOW);
Set notWarmColors = EnumSet.complementOf(warmColors);
Set notBlack = EnumSet.range(Color.RED, Color.YELLOW);
分享到:
相关推荐
jdk1.5以上版本中新增加的特性描述,带有代码例子让你很清晰的明白jdk的 常量 、枚举、 for each、反射等各种新的特性,相信需要的你,一定满足。
NULL 博文链接:https://newjueqi.iteye.com/blog/400855
jdk1.5以上版本中新增加的特性描述,带有代码例子让你很清晰的明白jdk的 常量 、枚举、 for each、反射等各种新的特性,相信需要的你,一定满足。
加强for循环,静态导入,枚举,泛型,反射,注解,类加载器,代理等。张孝祥总结,绝对经典。
自动包装和解包 更优化的循环语句 参数可变的方法 printf 枚举 静态引用 泛型
本书是作者良葛格本人近几年来学习Java的心得笔记,结构按照作者的学习脉络依次展开,从什么是Java、如何配置Java开发环境、基本的Java语法到程序流程控制、管理类文件、异常处理、枚举类型、泛型、J2SE中标准的API...
本书是作者良葛格本人近几年来学习Java的心得笔记,结构按照作者的学习脉络依次展开,从什么是Java、如何配置Java开发环境、基本的Java语法到程序流程控制、管理类文件、异常处理、枚举类型、泛型、J2SE中标准的API...
JDK5.0的新特性一、枚举类型generic-泛型自动解包装与自动包装的功能
本书是作者良葛格本人近几年来学习Java的心得笔记,结构按照作者的学习脉络依次展开,从什么是Java、如何配置Java开发环境、基本的Java语法到程序流程控制、管理类文件、异常处理、枚举类型、泛型、J2SE中标准的API...
6 枚举类(Enumeration Classes) 7 元数据(Meta data) 8 Building Strings(StringBuilder类) 9 控制台输入(Console Input) 10 Covariant Return Types(不晓得怎么翻译,大概是 改变返回类型) 11 格式化I/O(Formatted ...
详细说明了枚举类型,枚举类型是JDK5.0的新特征。Sun引进了一个全新的关键字enum来定义一个枚举类。
方式二:jdk5.0之后,可以使用enum关键字定义枚举类 三、Enum类的主要方法: 四、使用enum关键字定义的枚举类实现接口的情况 栗子一:实现接口,在enum类中实现抽象方法。 栗子二:让枚举类的 对象分别实现接口中...
著作:《java jdk 5.0学习笔记》、《java se 6技术手册》、《spring技术手册》等 译作:《ajax实战手册》、《jquery实战手册(第2版)》 个人网站:http://openhome.cc 目录 《java jdk 7学习笔记》 chapter1 ...
JAVA_HOME = /opt/jdk1.5.06 JDK 安装路径 --- JDK = JRE {JVM(硬件)+编译器(软件)} +编译器工具+类库 PATH = $Path:$Java_Home/bin:. ClassPath = . 类路径 7、包 --- 分类放置,减少命名空间 包名.类名 ...
定义:注解(Annotation),也叫元数据。...它是JDK5.0及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
全部代码出自电子工业出版社夏先波的《Java JDK实例宝典》一书,本书以J2SE 5.0为开发环境,选取Java应用的典型实例,循序渐进地介绍了Java语言的各种开发方法和技巧,实例代码注释详细规范,思路清晰。 第1章 ...
16 j2se5.0 新特性 自动装箱和拆箱; 新的for循环; 枚举类型; 静态导入; 格式化输出; 使用ProcessBuilder执行本地命令; 泛型编程; 监控和管理虚拟机;新的线程执行架构; 线程锁; 线程条件; 线程同步装置:semaphore ...
Java 注解(Annotation)是 JDK 5.0 及以后版本引入的一个特性,它是一个新的类型,与类、接口、枚举是在同一个层次。注解可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明、注释...
Java 注解(Annotation)是 JDK 5.0 及以后版本引入的一个特性。它是一个新的类型,与接口类似,位于同一个层次,称为 Java 的一个类型(TYPE)。注解可以声明在包、类、字段、方法、局部变量、方法参数等的前面,...