java 枚举
2015-11-29 10:15
441 查看
一、为什么使用枚举
在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。
面对这样的常量我们往往使用 public final static 去定义,而使用Enum枚举类型,可以将以前笨拙的代码变得优雅简单!
二、枚举的特点
1.枚举类型的每一个值都将映射到
2.他是个普通的类,它已经继承了Enum (java 是单继承)所以他不能继承其他类了。
在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。
面对这样的常量我们往往使用 public final static 去定义,而使用Enum枚举类型,可以将以前笨拙的代码变得优雅简单!
二、枚举的特点
1.枚举类型的每一个值都将映射到
protected Enum(String name, int ordinal)构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数设置表示了此设置被创建的顺序。
2.他是个普通的类,它已经继承了Enum (java 是单继承)所以他不能继承其他类了。
public enum EnumTest { //使用枚举定义常量 RED(1), GREEN(2) , YELLOW(3) ; private int code; // 构造函数,枚举类型只能为私有 private EnumTest(int code){ this.code=code; } public String toString(){ return String.valueOf(this.code); } /** * 演示枚举类型的遍历 */ private static void testTraversalEnum() { EnumTest[] enumTest = EnumTest.values (); for (EnumTest eEnumTest : enumTest) { System. out .println( " 当前灯 name : " + eEnumTest.name()); System. out .println( " 当前灯: " + eEnumTest); System. out .println( " 当前灯 ordinal : " + eEnumTest.ordinal()); } } /** * 演示 EnumMap 的使用, EnumMap 跟 HashMap 的使用差不多,只不过 key 要是枚举类型 */ private static void testEnumMap() { // 1. 演示定义 EnumMap 对象, EnumMap 对象的构造函数需要参数传入 , 默认是 key 的类的类型 EnumMap<EnumTest, String> currEnumMap = new EnumMap<EnumTest, String>(EnumTest.class ); currEnumMap.put(EnumTest.RED , "红灯"); currEnumMap.put(EnumTest.GREEN , "绿灯"); currEnumMap.put(EnumTest.YELLOW , "黄灯"); // 2. 遍历对象 for (EnumTest aEnumTest : EnumTest.values ()) { System. out .println( "[key=" + aEnumTest.name() + ",value="+ currEnumMap.get(aEnumTest) + "]" ); } } /** * 演示 EnumSet 如何使用, EnumSet 是一个抽象类,获取一个类型的枚举类型内容 <BR/> * 可以使用 allOf 方法 */ private static void testEnumSet() { EnumSet<EnumTest> currEnumSet = EnumSet.allOf (EnumTest.class ); for (EnumTest aEnumTestSetElement : currEnumSet) { System. out .println( " 当前 EnumSet 中数据为: " + aEnumTestSetElement); } } /** * switch与enum的结合使用 */ private static void testsWitch() { EnumTest switchState = EnumTest.RED; switch (switchState) { case RED: System.out.println("RED"); break; case GREEN: System.out.println("GREEN"); break; default: System.out.println("YELLOW"); break; } } public static void main(String[] args) { testTraversalEnum(); testEnumMap(); testEnumSet(); testsWitch(); } }
相关文章推荐
- 我看Java虚拟机(3)---类文件结构
- java基础随笔
- java修饰符
- java 俄罗斯方块02
- Java图形界面编程学习笔记(一)
- javaweb.用Jesery 构建rest服务
- Java 单例模式的常见应用场景
- Java 抽象方法学习小结
- Java新手之路——Day02 Hello Java
- Struts2中使用servletresponse直接输出内容到客户端出现:Cannot call sendError() after the response has been committed
- Java集合之Set
- Java基础测试总结
- 深入理解Java的接口和抽象类
- 学习java随笔第三篇:java的基本数据类型姿浊装淄滓赘
- springMVC从上传的Excel文件中读取数据
- java中连接数据库各种技术总汇
- java 二分查找法
- java类中的执行顺序
- java十分钟速懂知识点——NIO
- java十分钟速懂知识点——NIO