java как обновить экземпляр в методе? - PullRequest
0 голосов
/ 09 июля 2020

Хорошо, я запутался. Я пытаюсь обновить значение экземпляра в методе интерфейса.

public interface ICalculationMethods {

    static void matchMonitor(Game game) {
        Player player1 = game.getPlayer1();
        Player player2 = game.getPlayer2();
        int scorePlayer1 = 0;
        int scorePlayer2 = 0;
        List<Toss> tossListPlayer1 = new ArrayList<Toss>();
        List<Toss> tossListPlayer2 = new ArrayList<Toss>();
        tossListPlayer1.add(game.getToss1());
        tossListPlayer2.add(game.getToss2());
        if (winnerOfThisGame(game) == 0) {
            scorePlayer1++;
        } else if (winnerOfThisGame(game) == 1) {
            scorePlayer2++;
        }
        if (checkIfmatchIsover(game)) {
            if (scorePlayer1 > scorePlayer2) {
                player1.setTotalpoints(player1.getTotalpoints() + 1);
            } else if (scorePlayer1 < scorePlayer2) {
                player2.setTotalpoints(player2.getTotalpoints() + 1);
            }
        }
    }System.out.println(player2);

результат: Player [id = 2, name = Marianna Horne, totalpoints = 1]

Marianna На самом деле у Хорна в базе данных всего 9 баллов. Похоже, что внутри этого метода этот экземпляр больше похож на временную копию. Я не понимаю самого базового c концептуального метода s coop? Есть ли способ актуально обновить это значение в базе данных?

1 Ответ

0 голосов
/ 09 июля 2020

Я думаю, это зависит от того, как вы реализовали методы в любом Game классе, который вы создали. Если getPlayer1() просто возвращает новый экземпляр Player со статистикой оригинала, Player в переданном вами объекте Game не изменится вообще. Вместо этого вы должны вернуть фактический указатель на Player, который вы хотите изменить.

Однако я не слишком уверен в этой базе данных, о которой вы говорите. Если вы имеете в виду объект content Game, то просто сделайте то, что я сказал выше. Но если есть какая-то другая внешняя база данных, вам может потребоваться обновить и ее с помощью метода setTotalPoint() или где-то еще

...