枚举类是一种特殊的class,使用关键字enum定义。
枚举类里的枚举值就是这个枚举类的对象,拥有这个枚举类所定义的属性和方法。
枚举类里的枚举值就是这个枚举类的对象,拥有这个枚举类所定义的属性和方法。
例子程序:EnumTest.java
最简单的枚举定义和遍历
package com.test.enumtest;
//枚举类-常量
public enum EnumTest {
//定义枚举值-常量
sunday,
monday,
tuesday,
wednesday,
thursday,
friday,
saturday;
public static void main(String args[]) {
//获得常量
/*通过values()获得枚举值的数组*/
for (EnumTest e : EnumTest.values()) {
System.out.println(e.toString());
}
System.out.println("===============");
//效果一样
for (EnumTest e : EnumTest.values()) {
System.out.println(e);
}
System.out.println("===============");
System.out.println(EnumTest.thursday);
}
}
运行结果:sunday
monday
tuesday
wednesday
thursday
friday
saturday
===============
sunday
monday
tuesday
wednesday
thursday
friday
saturday
===============
thursday
例子程序:EnumTest1.java
带数值的枚举值,以及遍历数值
package com.test.enumtest;
//枚举类-常量带数值
public enum EnumTest1 {
//定义枚举值-常量带数值
sunday(99),
monday(100),
tuesday(101),
wednesday(102),
thursday(103),
friday(104),
saturday(105);
private final int value;
public int getValue() {
return value;
}
//构造方法
private EnumTest1(int value) {
this.value = value;
}
public static void main(String args[]) {
for (EnumTest1 e : EnumTest1.values()) {
System.out.println(e);
}
System.out.println("===============");
for (EnumTest1 e : EnumTest1.values()) {
System.out.println(e.getValue());
}
}
}
运行结果:sunday
monday
tuesday
wednesday
thursday
friday
saturday
===============
99
100
101
102
103
104
105
例子程序:EnumTest2.java
带键值对的枚举值,以及遍历
package com.test.enumtest;
//枚举类-键值对
public enum EnumTest2 {
//定义枚举值-键值对
sunday(99,"sun"),
monday(100,"mon"),
tuesday(101,"tues"),
wednesday(102,"wed"),
thursday(103,"thur"),
friday(104,"fri"),
saturday(105,"sat");
private final int code;
private final String value;
private EnumTest2(int code, String value) {
this.code = code;
this.value = value;
}
public int getCode() {
return code;
}
public String getValue() {
return value;
}
public static void main(String args[]) {
for (EnumTest2 e : EnumTest2.values()) {
System.out.println(e + " " + e.getCode() + " " + e.getValue());
}
}
}
运行结果:sunday 99 sun
monday 100 mon
tuesday 101 tues
wednesday 102 wed
thursday 103 thur
friday 104 fri
saturday 105 sat
例子程序:EnumTest3.java
使用Map保存枚举值,以及遍历
package com.test.enumtest;
import java.util.HashMap;
import java.util.Map;
//枚举类-键值对(装入一个HashMap内)
public enum EnumTest3 {
//定义枚举值-键值对
sunday(99,"sun"),
monday(100,"mon"),
tuesday(101,"tues"),
wednesday(102,"wed"),
thursday(103,"thur"),
friday(104,"fri"),
saturday(105,"sat");
private final int code;
private final String value;
private EnumTest3(int code, String value) {
this.code = code;
this.value = value;
}
public int getCode() {
return code;
}
public String getValue() {
return value;
}
private static Map<Integer, String> param = new HashMap<Integer, String>();
public static Map<Integer, String> getParam() {
return param;
}
//静态语句块初始化HashMap
static {
for (EnumTest3 e : EnumTest3.values()) {
param.put(e.getCode(), e.getValue());
}
}
public static void main (String args[]) {
//遍历Map
for (Map.Entry<Integer, String> m : EnumTest3.getParam().entrySet()) {
System.out.println("key:" + m.getKey() + " value:" + m.getValue());
}
}
}
运行结果:key:102 value:wed
key:103 value:thur
key:100 value:mon
key:101 value:tues
key:99 value:sun
key:104 value:fri
key:105 value:sat