EnumMap是一种特殊的map集合,他要求其中的键必须是enum类型,同时enum的每一个实例做为键是必须存在的,如果你没用调用put方法为一个键存入相对于的值时,其对应值为空。enumMap除了只能将enum实例最为键来调用put外和其他map集合一样。

    1. interface Command{
    2. void action();
    3. }
    4. public class EnumMaps {
    5. public static void main(String[] args) {
    6. EnumMap<AlarmPoints, Command> enumMap = new EnumMap<AlarmPoints, Command>(AlarmPoints.class);
    7. enumMap.put(AlarmPoints.KITCHEN, new Command() {
    8. @Override
    9. public void action() {
    10. System.out.println("Kitchen fire 任务一执行");
    11. }
    12. });
    13. enumMap.put(AlarmPoints.BATHROOM, new Command() {
    14. @Override
    15. public void action() {
    16. System.out.println("Bathroom alert 任务二执行");
    17. }
    18. });
    19. for (Map.Entry<AlarmPoints, Command> entry : enumMap.entrySet()) {
    20. System.out.println("key " + entry.getKey() + ":");
    21. entry.getValue().action();
    22. }
    23. try {
    24. enumMap.get(AlarmPoints.LOBBY).action();//没用为LOBBY存储相应的值
    25. } catch (Exception e) {
    26. System.out.println("对应的值为null");
    27. }
    28. }
    29. }

    同时,上面程序还采用了命令设计模式。通过单一的方法接口,然后从该接口实现具有不同行为的子类。通过构造不同的命令。在需要的时候执行响应的命令即可。同时,与常量相关的方法来比,EnumMap允许我们改变值对象,而常量相关方法在编译的时候就已经被固定了。