EnumMap是一种特殊的map集合,他要求其中的键必须是enum类型,同时enum的每一个实例做为键是必须存在的,如果你没用调用put方法为一个键存入相对于的值时,其对应值为空。enumMap除了只能将enum实例最为键来调用put外和其他map集合一样。
interface Command{
void action();
}
public class EnumMaps {
public static void main(String[] args) {
EnumMap<AlarmPoints, Command> enumMap = new EnumMap<AlarmPoints, Command>(AlarmPoints.class);
enumMap.put(AlarmPoints.KITCHEN, new Command() {
@Override
public void action() {
System.out.println("Kitchen fire 任务一执行");
}
});
enumMap.put(AlarmPoints.BATHROOM, new Command() {
@Override
public void action() {
System.out.println("Bathroom alert 任务二执行");
}
});
for (Map.Entry<AlarmPoints, Command> entry : enumMap.entrySet()) {
System.out.println("key " + entry.getKey() + ":");
entry.getValue().action();
}
try {
enumMap.get(AlarmPoints.LOBBY).action();//没用为LOBBY存储相应的值
} catch (Exception e) {
System.out.println("对应的值为null");
}
}
}
同时,上面程序还采用了命令设计模式。通过单一的方法接口,然后从该接口实现具有不同行为的子类。通过构造不同的命令。在需要的时候执行响应的命令即可。同时,与常量相关的方法来比,EnumMap允许我们改变值对象,而常量相关方法在编译的时候就已经被固定了。