По сути, я делаю игру на яхтах в MVC. Он отлично работает, но когда я пытаюсь сохранить сеанс игры, он не сохраняет игровой объект, содержащий и список игроков. Это без остановки выполнения, которое, безусловно, очистит список игр. По сути, экземпляр игры имеет следующие поля:
public String name;
public int numberOfPlayers;
public ArrayList<Player> players = new ArrayList<>();
int playerListIndex;
ArrayList<Boolean> checkable;
StandardRules yahtzeeRule = new StandardRules();
public int rounds;
public String date;
Arraylist игроков содержит экземпляры объекта Player, который имеет свои собственные поля и геттеры/сеттеры.
Мне удалось отследить, что проблема не сохраняется при вызове метода:
public void saveGame(Game thisGame) {
DB.saveGame(thisGame);
}
Что, в свою очередь, вызывает класс:
public class DB {
private static ArrayList<Game> savedGames = new ArrayList<>();
/**
* Saves the passed member into the database.
* @param game, the member to be saved.
*/
public static void saveGame(Game game) {
for (Game g : savedGames) {
if (g.name.equals(game.name)) {
savedGames.remove(g);
savedGames.add(game);
}
else {
savedGames.add(game);
}
}
}
Метод saveGame в основном проверяет Arraylist сохраненных игр, если имя уже существует, и если это так, он удаляет старое и добавляет новое. Если игры с таким названием нет, она просто добавляется в список. (Я мог бы реализовать базу данных MYSQL позже, но чтобы убедиться, что программа работает в первую очередь, я хотел бы использовать arraylist для проверки)
У меня сложилось впечатление, что мне нужно иметь статическую ссылку на БД, чтобы убедиться, что я все время пытаюсь получить доступ к одной и той же БД и не смешиваю экземпляры БД.
Что я здесь делаю неправильно?