枚举与抽象方法

枚举可以定义抽象方法,每个 enum 成员都需要实现这些方法。

enum Action {
    DODGE {
        public boolean execute(Player player) {
            return player.isAttacking();
        }
    },
    ATTACK {
        public boolean execute(Player player) {
            return player.hasWeapon();
        }
    },
    JUMP {
        public boolean execute(Player player) {
            return player.getCoordinates().equals(new Coordinates(0, 0));
        }
    };

    public abstract boolean execute(Player player);
}

这允许每个枚举成员为给定操作定义自己的行为,而不必在顶级定义中的方法中切换类型。

请注意,此模式是使用多态和/或实现接口通常实现的简短形式。