Должен ли я мутировать объекты в потоке? - PullRequest
0 голосов
/ 05 октября 2018

Скажем, у меня есть подробная модель следующим образом:

public class Detail {
    public Integer lineId;
    public Integer quantity;
    public BigDecimal length;
    public Integer sequenceNumber;
}

И я создал из нее список.

List<Detail> details = details();

Теперь я хочу обновить порядковый номер с помощью метода:

public void updateSequenceNumbers(List<Detail> details) {
    details.forEach(detail -> detail.sequenceNumber = getNumberFromElsewhere());
}

Запрещение любых синтаксических ошибок, которые могли быть сделаны выше, должно работать из моего понимания.Мой вопрос должен я сделать это?Я смотрел это видео на YouTube , и докладчик специально упоминает, что мутирование объектов вне потоков - плохая идея, но я видел код, подобный приведенному выше, много раз.Мое понимание неверно?

1 Ответ

0 голосов
/ 05 октября 2018

Прежде всего details.forEach - это не , вызываемый из stream, а непосредственно из List - и это разные вещи.И, конечно, вы не мутируете вне потока, а самим detail.

Затем вы изменяете внутренние свойства вашего объекта, не сам List (например, remove или add) - это называется неструктурным изменениеми это более чем нормально, чтобы сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...