Я чувствую, что это действительно основной вопрос, но у меня никогда не было такой ситуации. Сейчас у меня есть структура вроде этого:Java: классы с экземпляром друг друга
public class Main{
ClassA a = new ClassA();
ClassB b = new ClassB(a);
}
My ClassA
необходима в ClassB
, а также в Main.class
. Теперь я заметил, что ClassA
должен знать ClassB
.
public class Main{
ClassA a = new ClassA(b);
ClassB b = new ClassB(a);
}
Очевидно, что это не сработает. Сначала я подумал о том, чтобы использовать Observer Pattern
, но для меня это кажется излишним, к тому же обычно это не тот шаблон.
Есть ли способ, что я могу сделать Main.class
знаю ClassA.class
& ClassB.class
, а также сделать ClassA.class
знать ClassB.class
и наоборот? Так как Main.class
использует ClassA
, также я должен иметь один и тот же класс, инициализированный только один раз.
Его круговая зависимость, которой вы должны избегать – Rehman
Почему бы не назначить ее? Сначала объявите 'b', затем присвойте' a' переменной. Вам не обязательно включать это в конструктор. – Arc676
Как сказал «Рехман», это гарантированная утечка памяти, потому что два объекта всегда будут указывать друг на друга, и, если только один из них явно не установлен в «null», ни один из них не будет собран из мусора. – NRitH