如何将Enum值存储到HashMap中?

时间:2017-07-19 03:14:48

标签: java enums hashmap

我是一个java noob,所以忍受我。

我正在尝试在哈希映射中存储一个播放器名称的PlayerState(一个枚举)。我想在加入服务器的触发器触发侦听器时将玩家添加到散列图。因此,我使用的方法可以从该类访问。我的问题是我的IDE向我显示存在错误并且它想要"施放"我的代码。如果你知道的话,我很失落于我应该如何做到这一点。请帮忙。

这是我的代码。

public class PlayerHandler {

    private static HashMap<Player, PlayerState> playerMap = new HashMap<>();

    public PlayerHandler() {

    }

    public void addPlayer(Player player, PlayerState state) {
        playerMap.add(player, PlayerState.values());
    }

    public static PlayerState getPlayer(Player player) {
        return playerMap.get(player);
    }

}

这是我制作的Enum。

public enum PlayerState {

    IN_LOBBY(true), IN_GAME(false), DEAD(false);

    private boolean canPlay;

    private static PlayerState currentState;

        PlayerState(boolean canPlay) {
            this.canPlay = canPlay;
        }

        public boolean canPlay() {
            return canPlay();
        }

        public static void setState(PlayerState state) {
            currentState = state;
        }

        public static boolean isState(PlayerState state) {
            return PlayerState.currentState == state;
        }

        public static PlayerState getState() {
            return currentState;
        }

}

My Error

1 个答案:

答案 0 :(得分:1)

我认为您希望将state作为PlayerState而不是PlayerState.values()传递。另外,因为playerMap是HashMap,所以你使用的是put方法而不是add方法,所以不应该playerMap.add(player, PlayerState.values());而是playerMap.put(player, state);

如果您对HashMaps有其他疑问,请查看HashMap documentation