Java 2新对象搞得一团糟

时间:2015-11-04 14:36:04

标签: java bukkit

我创建了一个名为Game的新对象:

public class Game {

    private String gamenaam;
    private String bungeenaam;
    private int poort;
    private int minplayers;
    private int maxplayers;
    private static GameState gamestate = GameState.Ingame;


    public Game(String naam) {
        this.gamenaam = naam;

        setAlles();
    }

    public String getGameNaam() {
        return this.gamenaam;
    }

    public String getBungeeNaam() {
        return bungeenaam;
    }

    public int getPoort() {
        return poort;
    }

    public int getMinPlayers() {
        return minplayers;
    }
    public int getMaxPlayers() {
        return maxplayers;
    }

    public GameState getCurrentState() {
        //System.out.print(gamenaam + ":" + MySQL.getGameState(getGameNaam()) + ":" + gamestate);
        return gamestate;
    }
    public void setCurrecntState(GameState state) {
        gamestate = state;
    }



    private void setAlles() {
        bungeenaam = MySQL.getBungeeNaam(this.gamenaam);
        poort = MySQL.getPoort(this.gamenaam);
        minplayers = MySQL.getMinPlayer(this.gamenaam); 
        maxplayers = MySQL.getMaxPlayer(this.gamenaam);
        //gamestate = MySQL.getGameState(this.gamenaam);
    }

}

我将所有内容存储在public static HashMap<Location, Game> gameSigns = new HashMap<Location, Game>();地图

Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(Bukkit.getPluginManager().getPlugin("SCGameHost"), new Runnable() {

    @Override
    public void run() {
        for(Map.Entry<Location, Game> entry: Main.gameSigns.entrySet()){
            Game game = entry.getValue();
            if(game.getGameNaam().equalsIgnoreCase("Heks")) {
                System.out.print(game.getGameNaam()+" is changed to FINISHED");
                game.setCurrecntState(GameState.Finished);
            }else {
                game.setCurrecntState(GameState.Maintenance);
            }
        }
    }
}, 10 *20L, 10 *20L);

我在gameSigns HashMap Heks和Snowball中有两件事。 当我将Heks改为GameState.Finished时,雪球也在改变。

1 个答案:

答案 0 :(得分:0)

这是因为变量gamestate是静态的,所以它在Game类的所有实例之间共享。如果您想要不同实例的单独值,请删除单词static。