Tome estas dos clases de Java:¿Alguna buena manera de hacer que dos objetos inmutables se refieran entre sí?
class User {
final Inventory inventory;
User (Inventory inv) {
inventory = inv;
}
}
class Inventory {
final User owner;
Inventory (User own) {
owner = own;
}
}
¿Hay alguna manera without using reflection* de sacar esto adelante? Realmente no espero que lo sea, pero no está de más preguntarlo.
Actualización: Dado que en la construcción de código de bytes tiene dos pasos (1. Asignar objeto, 2. llamada al constructor **) puede ser esto (ab) que se utilizan para ello, con el código de bytes a mano o un compilador de encargo? Estoy hablando de realizar primero el paso 1 para ambos objetos, luego el paso 2 para ambos, usando las referencias del paso 1. Por supuesto, algo así sería bastante engorroso, y esta parte de la pregunta es académica.
(* Debido a la reflexión puede dar problemas con un controlador de seguridad)
(** indica que mi conocimiento limitado)
las dependencias circulares no son a menudo una buena idea – Bozho
Lo siento, ¿podría explicar un poco sobre el problema. No veo cuál es el problema, ya que ya tiene una referencia al otro objeto? – Anders
@Antes, el problema es que ambos requieren una referencia a la otra en el momento de la construcción, y dicha referencia solo está disponible después de la construcción. –