У меня есть два класса: сетка и робот. И я призываю:Изменение объекта, помещенного в параметр конструктора другого класса несколько раз
Grid g = new Grid(5,5);
Robot a = new Robot(1, 1, g);
Robot b = new Robot(2, 2, g);
бы можно было бы для меня, чтобы разделить г между двумя классами роботов так, что изменение г, используя метод, называемый на Robot а, будет также изменить Robot б таким же образом?
Или есть другой способ сделать это?
Это прекрасно, однако вам нужно быть осторожным, чтобы доступ к 'g' был синхронизирован. Чтобы метод 'g' влиял на« робот », вам нужно сообщить' g' о роботах. Возможно, вам стоит подумать о том, чтобы сделать что-то большее: «Grid g = ..; Робот a = новый робот (1, 1); g.addRobot (а); ... '(если конструктор' Robot' не вызывает какой-либо метод на 'g', чтобы сообщить ему о существовании робота) – Tibrogargan
Робот a и b получили две разные ссылки на объект g, но эта две контрольные точки - тот же g-объект. Но поскольку @Tibrogargan говорит, что вам следует внимательно следить за объектом g в многопоточной среде. – seal
@seal Java pass-by-value, поэтому они получают одну и ту же ссылку (передается * значение * ссылки, а не ссылка на объект 'Grid') – Tibrogargan