我有以下几个主要类别和主要方法:的Java传递两个对象到每个人在一个步骤
public class Main {
Peter peter = new Peter(this);
Tom tom = new Tom(this);
public static void main(String[] args) {
Main main = new Main();
System.out.println(main.peter.tom);
System.out.println(main.tom.peter);
}
}
和下面的父类:
class Enemy {
//some variables
}
和下面的两个子类:
class Tom extends Enemy {
Enemy peter;
Tom(Main main) {
this.peter = main.peter;
}
}
class Peter extends Enemy {
Enemy tom;
Peter(Main main) {
this.tom = main.tom;
}
}
当两个打印方法运行在main方法中时,第一个打印方法返回null,因为Tom不是creat当时它被分配到Enemy tom
。 为了解决这个问题,我没有在构造函数中分配Tom
和Peter
到Enemy
,而是在创建这两个对象之后分配了一个方法。 因此,更多的是这样的:
private void setEnemies(){
peter.tom = tom;
tom.peter = peter;
}
当方法中的println方法调用之前,它完美的作品。 我的问题是:有没有办法在对象创建时设置敌人,所以在创建对象之后我不必调用单独的方法?
请注意,您所描述的问题,是因为'彼得·彼得=新彼得(本);'是*不安全的出版物*的例子:你在'Main'被完全初始化之前,将'Main'引用传递给'Peter'的构造函数。这意味着'Peter'可以在处于有效状态之前开始使用'Main'做事情,因此可能会导致意外和不可预测。 –
我知道在我当前的项目中,我从另一个类的构造函数创建了'Peter'和'Tom'。我以这种方式发布它来简化代码。 –
对于'RadioButton's,只有一个'RadioButtonGroup'被添加到他们的结构/作为工厂中完成同样的事情。然后RadioButtonGroup确保所有单选按钮相互关联, –