importjava.util.EnumMap;importjava.util.EnumSet;public enumWeek {
MON {publicString toLocaleString() {return "星期一";
}
},
TUES {publicString toLocaleString() {return "星期二";
}
},
WEB {publicString toLocaleString() {return "星期三";
}
},
THUR {publicString toLocaleString() {return "星期四";
}
},
FRI {publicString toLocaleString() {return "星期五";
}
},
SAT {publicString toLocaleString() {return "星期六";
}
},
SUN {publicString toLocaleString() {return "星期日";
}
};public abstractString toLocaleString();public static voidmain(String[] args) {for(Week w : Week.values()) {
System.out.println(w.toLocaleString());
}
testEnumSet();
testEnumMap();
testTraversalEnum();
}/** 演示EnumSet如何使用,EnumSet是一个抽象类,获取一个类型的枚举类型内容
*
* 可以使用allOf方法
*
* values()方法是编译器插入到enum定义中的static方法,所以,
* 当你将enum实例向上转型为父类Enum是,values()就不可访问了。
* 解决办法:在Class中有一个getEnumConstants()方法,
* 所以即便Enum接口中没有values()方法,我们仍然可以通过Class对象取得所有的enum实例*/
private static voidtestEnumSet() {
EnumSet currEnumSet = EnumSet.allOf(Week.class);for(Week aLightSetElement : currEnumSet) {
System.out.println("当前EnumSet中数据为:" +aLightSetElement);
}
;
Week[] weeks= Week.class.getEnumConstants();
}/***
* 演示EnumMap的使用,EnumMap跟HashMap的使用差不多,只不过key要是枚举类型*/
private static voidtestEnumMap() {
EnumMap currEnumMap = new EnumMap(Week.class);//1.演示定义EnumMap对象,EnumMap对象的构造函数需要参数传入,默认是key的类的类型
currEnumMap.put(Week.MON,"星期1");
currEnumMap.put(Week.TUES,"星期2");
currEnumMap.put(Week.WEB,"星期3");
currEnumMap.put(Week.THUR,"星期4");
currEnumMap.put(Week.FRI,"星期5");
currEnumMap.put(Week.SAT,"星期6");
currEnumMap.put(Week.SUN,"星期7");for(Week aLight : Week.values()) {
System.out.println("[key=" + aLight.name() + ",value="
+ currEnumMap.get(aLight) + "]");
}
}/***
* 演示枚举类型的遍历*/
private static voidtestTraversalEnum() {
Light[] allLight=Light.values();for(Light aLight : allLight) {
System.out.println("当前灯name:" +aLight.name());
System.out.println("当前灯ordinal:" +aLight.ordinal());
System.out.println("当前灯:" +aLight);
}
}public enumLight {//利用构造函数传参
RED(1), GREEN(3), YELLOW(2);//定义私有变量
private intnCode;//构造函数,枚举类型只能为私有
private Light(int_nCode) {this.nCode =_nCode;
}
@OverridepublicString toString() {return String.valueOf(this.nCode);
}
}
}