.EnumMap 类提供了 java.util.Map 接口的一个特殊实现,该接口中的键(key)是一个枚举类型.
清单 11:. EnumMap 例子
public void test() throws IOException {
EnumMap<Priority, String> descriptionMessages =
new EnumMap< Priority, String>( Priority.class);
descriptionMessages.put(Priority.High, "High means ...");
descriptionMessages.put(Priority.Medium, " Medium represents...");
descriptionMessages.put(Priority.Low, " Low means...");
for (Priority p : Priority.values( ) ) {
System.out.println("For priority " + p + ", decription is: " +
descriptionMessages.get(p));
}
}
在Eclipse 3.1中体验J2SE 5.0的新特性: 第一部分 :枚举类型(6)
时间:2011-04-02 IBM 邹青 吴嫣 吴疆
EnumSet 类提供了 java.util.Set 接口的实现,该接口保存了某种枚举类型的值的集 合.EnumSet的作用类似于特性的集合,或者类似于某个枚举类型的所有元素的值的子 集.EnumSet 类拥有一系列的静态方法,可以用这些方法从枚举类型中获取单个元素或某 些元素, 下面的程序例子显示如何这些静态方法:
清单 12:.EnumSet 例子
public class TestEnumSet {
public enum ColorFeature {
RED,BLUE, GREEN, YELLOW,BLACK
} ;
public static void main(String[] args) {
EnumSet allFeatures = EnumSet.allOf(ColorFeature.class);
EnumSet warmColorFeatures = EnumSet.of(ColorFeature.RED,
ColorFeature.YELLOW);
EnumSet non_warmColorFeatures = EnumSet.complementOf (warmColorFeatures);
EnumSet notBlack = EnumSet.range(ColorFeature.RED, ColorFeature.YELLOW);
for (ColorFeature cf : ColorFeature.values()){
if (warmColorFeatures.contains(cf)) {
System.out.println("warmColor "+cf.name());
}
if (non_warmColorFeatures.contains(cf)) {
System.out.println("non_WarmColor "+cf.name());
}
}
}
}
我们在Eclipse3.1环境中运行上面的程序,结果如下图:
图8: EnumSet 样例运行结果
1.3.4 枚举类型的函数定义
在介绍创建枚举类型中曾提到枚举类型都是java.lang.Enum的子类. 也就是说, 枚举 类型都是可编译的Java 的类,那么就可以在枚举类型里添加构造函数和其它函数,如清 单13里的getDescription()
清单 13:
public enum ColorFeature {
RED(0),
BLUE(0),
GREEN(300),
YELLOW(0),
BLACK(0);
/** The degree for each kind of color*/
private int degree;
ColorFeatures(int degree) {
this.degree = degree;
}
public int getDegree( ) {
return degree;
}
public String getDescription( ) {
switch(this) {
case RED: return "the color is red";
case BLUE: return "the color is blue";
case GREEN: return "the color is green";
case BLACK: return "the color is black";
case YELLOW: return "the color is yellow"
|