Java 枚举(enum)的用法
Posted yuminfeng728
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 枚举(enum)的用法相关的知识,希望对你有一定的参考价值。
概述
枚举是在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 枚举(enum)的用法的主要内容,如果未能解决你的问题,请参考以下文章