Да, у вас должна быть обратная ссылка (как уже было сказано).
Я только добавляю сюда, чтобы упомянуть, что это может немного залипнуть.Если вы можете, я предлагаю изменить структуру вашей структуры так, чтобы вам не нужна двойная ссылка, если нет, я настоятельно рекомендую вам не пытаться выполнить настройку в конструкторах - вместо этого вызовите a.init (b) и /или b.init (a) для установки значений.
Может работать так, как написано на данный момент, но со временем инициализация в конструкторах приведет к увеличению ограничений и разочарований.Не то, чтобы вы не могли рефакторизовать позже, но я думаю, что я просто предлагаю это, чтобы вы не тратили слишком много времени на то, чтобы стучать головой, прежде чем вы решите провести рефакторинг.таким образом получается, что вы не можете создать экземпляр только одного из них, что делает тестирование более трудным, и если вы добавите какие-либо дополнительные зависимости в конструкцию класса, это может стать невозможным (это начинает достигать такой же сложности, что и множественныенаследование).
Вы также можете рассмотреть возможность добавления обоих к общему источнику в качестве слушателей или использования шины событий (возможно, самое чистое и простое решение).