Java让类相互获取信息
假设有两个类,一个叫做Main,另一个叫做Second。Second需要从Main获取一个变量,Main需要从Second获取一个方法 例如:Java让类相互获取信息,java,Java,假设有两个类,一个叫做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 print
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=newmain;第二秒=新的第二秒;如果没有堆栈溢出异常,您应该怎么做?不要使用这种初始化,在另一个类中为每个类添加一个setter,并在构造后设置
Main m = new Main();
Second s = new Second();
m.setSecond(s);
s.setMain(m);
不要使用这种初始化,在另一个类中为每个类添加一个setter,并在构造后设置
Main m = new Main();
Second s = new Second();
m.setSecond(s);
s.setMain(m);
假设Main和Second的实例应相互包含引用,则可以将引用传递给构造函数:
Main的构造函数:
public Main (Second second)
{
this.second = new Second (this);
}
public Second (Main main)
{
this.main = main;
}
第二名建造师:
public Main (Second second)
{
this.second = new Second (this);
}
public Second (Main main)
{
this.main = main;
}
如果,正如名称所暗示的,Second依赖于Main,即如果没有Main的封闭实例,Second不存在,那么您可以将Second定义为Main的内部类,在这种情况下,它将隐式地保存封闭类Main的实例 假设Main和Second的实例应该相互引用,您可以将引用传递给构造函数:
Main的构造函数:
public Main (Second second)
{
this.second = new Second (this);
}
public Second (Main main)
{
this.main = main;
}
第二名建造师:
public Main (Second second)
{
this.second = new Second (this);
}
public Second (Main main)
{
this.main = main;
}
如果,正如名称所暗示的,Second依赖于Main,即如果没有Main的封闭实例,Second不存在,那么您可以将Second定义为Main的内部类,在这种情况下,它将隐式地保存封闭类Main的实例