Скажем, у вас есть два класса, один называется Main
а второй называется Second
. Second
необходимо взять переменную от Main
и Main
чтобы взять метод из Second
Пример:
public class Main
{
Second second = new Second();
public int firstInt = 5;
second.printThing();
}
public class Second
{
Main main = new Main();
public void printThing()
{
System.out.println(main.firstInt);
}
}
Поскольку вы не можете выполнить Main main = new Main();
и Second second = new Second;
не получая исключение, что вы должны делать?
Предполагая, что экземпляры Main
и Second
должны содержать ссылки друг на друга, вы можете передать ссылки на конструкторы:
Main
конструктор:
public Main (Second second)
{
this.second = new Second (this);
}
Second
конструктор:
public Second (Main main)
{
this.main = main;
}
Если, как следует из названий, Second
зависит от Main
(т.е. no isntance of Second
может существовать без закрывающего экземпляра Main
), вы можете определить Second
как внутренний класс Main
, и в этом случае он будет неявно содержать экземпляр охватывающий класс Main
.
Не используйте эту инициализацию, добавьте установщик для каждого класса в другой и установите после построения.
Main m = new Main();
Second s = new Second();
m.setSecond(s);
s.setMain(m);