Есть ли хороший способ сделать так, чтобы два неизменяемых объекта ссылались друг на друга?

Возьмем эти два Java-класса:

class User {
   final Inventory inventory;
   User (Inventory inv) {
       inventory = inv;
   }
}

class Inventory {
   final User owner;
   Inventory (User own) {
       owner = own;
   }
}

Есть ли способ без использования отражения * сделать это? На самом деле я этого не ожидал, но не повредит спросить.

Обновление: Поскольку в построении байт-кода есть два шага (1. выделить объект, 2. вызвать конструктор **), можно ли это (ab) использовать для этого с рукописным байт-кодом или с помощью специального компилятора? Я говорю о выполнении шага 1 для обоих объектов сначала, а затем шага 2 для обоих, используя ссылки из шага 1. Конечно, что-то подобное было бы довольно громоздким, и эта часть вопроса носит академический характер.

(* Потому что отражение может вызвать проблемы с менеджером безопасности)

(** Говорит, что мои знания ограничены)

15
задан Community 23 May 2017 в 11:46
поделиться