java 28 - 5 JDK5的新特性 之 枚举的使用
上一章,自定义了枚举类,超级麻烦。。
所以,JAVA给了一个枚举类:类 Enum<E extends Enum<E>>
注意事项
- 定义枚举类要用关键字enum
- 所有枚举类都是Enum的子类
- 枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略
- 枚举类可以有构造器,但必须是private的,它默认的也是private的。枚举项的用法比较特殊:枚举(“”);
- 枚举类也可以有抽象方法,但是枚举项必须重写该方法
- 枚举在switch语句中的使用
enum的方法:
除了下面的方法,还有一个方法在API中找不到的:
values(); : 每个枚举类都具有这个方法,遍历枚举类的所有美剧值。
// values()
// 此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便
Direction2[] dirs = Direction2.values();
for (Direction2 d2 : dirs) {
System.out.println(d2);
System.out.println(d2.getName());
}
| 方法摘要 | ||
|---|---|---|
protected Object |
clone() 抛出 CloneNotSupportedException。 |
|
int |
compareTo(E o)比较此枚举与指定对象的顺序。 |
|
boolean |
equals(Object other)当指定对象等于此枚举常量时,返回 true。 |
|
protected |
finalize()枚举类不能有 finalize 方法。 |
|
Class<E> |
getDeclaringClass()返回与此枚举常量的枚举类型相对应的 Class 对象。 |
|
int |
hashCode()返回枚举常量的哈希码。 |
|
String |
name()返回此枚举常量的名称,在其枚举声明中对其进行声明。 |
|
int |
ordinal()返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。 |
|
String |
toString()返回枚举常量的名称,它包含在声明中。 |
|
static
|
valueOf(Class<T> enumType, String name)返回带指定名称的指定枚举类型的枚举常量。 |
|
第一版:
public enum Direction01 {
FRONT, BENIND, LEFT, RIGHT;
}
第二版:
public enum Direction02 {
FRONT("前"), BENIND("后"), LEFT("左"), RIGHT("右");
private String name;
private Direction02(String name) {
this.name = name;
}
public String getname() {
return name;
}
}
第三版:
public enum Direction03 {
FRONT("前") {
@Override
public void show() {
System.out.println("前");
}
},
BEHIND("后") {
@Override
public void show() {
System.out.println("后");
}
},
LEFT("左") {
@Override
public void show() {
System.out.println("左");
}
},
RIGHT("右") {
@Override
public void show() {
System.out.println("右");
}
}, ;
private String name;
private Direction03(String name) {
this.name = name;
}
public String getname(String name) {
return name;
}
public abstract void show();
}
测试类:
public class DirectionDemo {
public static void main(String[] args) {
// 打印第一版本
Direction01 d1 = Direction01.FRONT;
System.out.println(d1); // FRONT
// 打印第二版本
Direction02 d2 = Direction02.FRONT;
System.out.println(d2); // FRONT
System.out.println(d2.getname()); // 前
// 打印第三版本 (枚举在switch语句中的使用)
Direction03 d3 = Direction03.FRONT;
switch (d3) {
case FRONT:
System.out.println("选择了前");
break;
case BEHIND:
System.out.println("选择了后");
break;
case LEFT:
System.out.println("选择了左");
break;
case RIGHT:
System.out.println("选择了右");
break;
default:
break;
}
}
}
java 28 - 5 JDK5的新特性 之 枚举的使用的更多相关文章
- java 28 - 4 JDK5的新特性 之 枚举的概述和自定义枚举类
枚举 枚举概述 是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内.举例:一周只有7天,一年只有12个月等. 回想单例设计模式:单例类是一个类只有一个实例 那么多例类就是一个类有多个实例,但 ...
- Java基础和JDK5.0新特性
Java基础 JDK5.0新特性 PS: JDK:Java Development KitsJRE: Java Runtime EvironmentJRE = JVM + ClassLibary JV ...
- java 28 - 6 JDK7的新特性
JDK7的新特性: 二进制字面量 数字字面量可以出现下划线 switch 语句可以用字符串 泛型简化 异常的多个catch合并 try-with-resources 语句 二进制字面量 JDK7开始, ...
- java 28 - 7 JDK8的新特性 之 接口可以使用方法
JDK8的新特性: http://bbs.itcast.cn/thread-24398-1-1.html 其中之一:接口可以使用方法 interface Inter { //抽象方法 public a ...
- JDK5的新特性之 增强for
package cn.itcast.day19.foreach; import java.util.ArrayList; import java.util.Collection; import j ...
- Java JDK5.0新特性
JDK5.0新特性 虽然JDK已经到了1.8 但是1.5(5.0)的变化是最大的 1. 增强for循环 foreach语句 foreach简化了迭代器 作用: 对存储对象的容器进行迭代 (数组, co ...
- Javaweb学习笔记——(七)——————myexlipse基本使用、jdk5.0新特性及反射讲解
1.debug调试模式: *使用这种模式,调试程序(看到程序运行停止在这一行) -显示出来行号 -双击左边,出现一个圆点,表示设置了一个断点 *使用debug as方式,运行程序 -特使是否进入到调试 ...
- Day07 jdk5.0新特性&Junit&反射
day07总结 今日内容 MyEclipse安装与使用 JUnit使用 泛型 1.5新特性 自动装箱拆箱 增强for 静态导入 可变参数方法 枚举 反射 MyEclipse安装与使用(yes) 安装M ...
- JDK5的新特性:泛型、可变参数、静态导入
数组可以在创建的时候就指定存放的数据类型,这样放入不同类型的时候就会发生编译错误. 而集合却可以存储多种不同类型,这样的话如果是遍历的时候在集合中装了好多不同的数据类型的时候,十分容易发生类型转换错误 ...
随机推荐
- 在Sharepoint 2013中,使用JS判断当前用户是否在某个组里面
使用Sharepoint客户端对象模型,判断当前用户是否在某个组里面. 在View 和 Edit List Item的时候使用,使用户编辑修改List Item的时候有权限的区分. 在Edit 页面加 ...
- Atitit.复合文档的格式 标准化格式
Atitit.复合文档的格式 标准化格式 1. Docfile1 2. Iso Cdf cd file1 3. Zip1 4. Ooxml1 5. Odf :OpenDocument Form ...
- MySQL Performance tuning
1.表级锁状态 mysql> show status like 'table%'; +----------------------------+-----------+ | Variable_n ...
- 转载:jsp中jstl标签的类似 if - else 语句 的语法
原文链接:http://www.cnblogs.com/wanggd/archive/2013/05/27/3101788.html 在jsp中引入jstl的标签库和函数库 <%@ taglib ...
- new ActiveXObject("Scripting.FileSystemObject") 时抛出异常 .
使用JScript读写本地文件时,会使用Scripting.FileSystemObject控件. IE默认是不允许运行这类“未标记为安全执行脚本的ActiveX控件”的. 因此执行下行代码时: fs ...
- WordCount的程序设计没写出来怎么办
这一星期要完成三个小作业,完成前两个已经让我很吃力的了,现在这个WordCount的编程我都没有头绪,不知道从何下手.虽然要求很看起来很简单,可是不知道怎么去设计这个程序,这两天我也在积极找书学习相关 ...
- git浅谈
我们为什么要使用git 应用场景分析 1.使用svn,已经开发完一个需求,正在开发第二个需求,但是测试需要你立刻将你完成的第一个需求提交,请问现在你该怎么做: svn的解决方法大概是这样的:打开提交视 ...
- 教你手工mysql拆库
互联网网站应用大多采用mysql作为DB存储,限于mysql单机性能的瓶颈,为了支撑更大容量和更大的访问量,dba一般通过建立分布式集群,让多个mysql共同提供服务.所谓的mysql分布式集群,实质 ...
- SQL优化技巧--远程连接对象引起的CTE性能问题
背景 最近SSIS的开发过程中遇到几个问题.其中使用CTE时,遇到一个远程连接对象,结果导致严重的性能问题,为了应急我就修改了代码. 之前我写了一篇介绍CTE的随笔包含了CTE的用法等: http:/ ...
- 烂泥:Linux源码包制作RPM包之Apache
本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司服务器比较多,需要把apache源码包制作成rpm包,然后放到公司内网yum源上进行下载安装.apache的rpm包安装方式比源码安装方式比较快,这能 ...