我是一个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;
}
}
答案 0 :(得分:1)
我认为您希望将state
作为PlayerState而不是PlayerState.values()
传递。另外,因为playerMap是HashMap,所以你使用的是put方法而不是add方法,所以不应该playerMap.add(player, PlayerState.values());
而是playerMap.put(player, state);
如果您对HashMaps有其他疑问,请查看HashMap documentation。