Java 枚举(enum)的用法
2016-06-07 09:08
537 查看
概述
枚举是在JDK 1.5 时引入的类型。创建枚举类型要使用关键字enum,隐含了所创建的类型都是java.lang.Enum类的子类。枚举类型中的每一个值都将映射到 protected Enum(String name, int ordinal) 构造函数中,在这里,每个值的名称都被转换成一个字符串,并且序数的值表示了被创建的顺序。简单枚举定义常量
enum Colors { RED, GREEN, YELLOW, GRAY; } public class Main { public static void main(String args[]) { Colors color = Colors.GRAY; System.out.println(color.name()); //返回此枚举列表常量的名称 //用于 switch 条件的判断 switch (color) { case RED: System.out.println("this is red color"); break; case GREEN: System.out.println("this is red green"); break; case YELLOW: System.out.println("this is red yellow"); break; case GRAY: System.out.println("this is red gray"); break; } System.out.println(color.ordinal()); // 结果为3:返回枚举列表常量在枚举中的索引位置,从0开始 for(Colors c : Colors.values()){ // values()可以获得枚举列表常量值的数组 System.out.println(c); } } }
在枚举中自定义属性和方法
enum Colors { //枚举列表常量通过括号赋值时,必须要有对应参数的构造函数,否则编译出错。 //枚举列表常量必须统一赋值,或者不赋值,否则编译出错 RED("红色",1), GREEN("绿色",2), YELLOW("黄色",3), GRAY("灰色",4); private String name; private int id; //构造方法里面的参数类型与枚举列表中参数类型一致 private Colors(String name , int id) { this.name = name; this.id = id; } public String getName() { return name; } public int getId() { return id; } //通过id,获得name值 public static String getName(int id){ for (Colors color : Colors.values()) { if(color.id == id){ return color.name; } } return null; } } public class Main { public static void main(String args[]) { System.out.println(Colors.getName(3)); } }
EnumSet和EnumMap的应用
public static void main(String args[]) { //创建一个枚举集合包含所有在指定元素类型的元素 EnumSet<Colors> colorSet = EnumSet.allOf(Colors.class); Iterator<Colors> iterator= colorSet.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next().getId()); } EnumMap<Colors, String> colorMap = new EnumMap<Colors, String>(Colors.class); colorMap.put(Colors.RED, "红色"); colorMap.put(Colors.GREEN, "绿色"); colorMap.put(Colors.YELLOW, "黄色"); colorMap.put(Colors.GRAY, "灰色"); Iterator<Entry<Colors, String>> it = colorMap.entrySet().iterator(); while(it.hasNext()){ System.out.println(it.next().getKey()); } }
枚举的特性:
1.不能有public的构造函数,这样可以保证客户代码没有办法新建一个enum的实例。
2.所有的枚举值都是public,static,final的。
3.Enum默认实现了java.lang.Comparable接口
4.重写了toString方法。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树