ArrayLists изменчивы? - PullRequest
       19

ArrayLists изменчивы?

0 голосов
/ 02 января 2019

У меня есть класс, содержащий Arraylist ArrayList<Move> moves.Я вызываю получателя этого Arraylist из другого класса и добавляю ход: panel.getMoves().add(move).Но когда я потом перебираю Arraylist, возникают действительно странные ошибки, намекающие на то, что ходы не добавляются правильно.

Должен ли я вызвать panel.setMoves(panel.getMoves().add(move))?Если да, то почему я всегда думал, что списки изменчивы?

1 Ответ

0 голосов
/ 02 января 2019

Зависит от того, как реализовано getMoves().

Он может вернуть внутреннюю копию ArrayList (для ее обновления необходимо позвонить setMoves(ArrayList)) или опубликовать прямую ссылку на нее (вам не нужен установщик). Последнее указывает на плохую инкапсуляцию.

Любой экземпляр класса ArrayList является изменяемым. Это в основном оболочка для динамически изменяемого массива. Его элементы могут быть изменены.

...