我正在开发一个使用 3 个类的程序,一个是主驱动程序,一个是 Player 类,一个是 Roster 类。 Player 类没有默认构造函数,并且有一个带有 3 个参数的重载构造函数,如下所示:
public Player(String name, double attackStat, double blockStat) {
this.name = name;
this.attackStat = attackStat;
this.blockStat = blockStat;
}
Player 类还为三个变量中的每一个都有“getter”。 Roster 类有一个默认构造函数和一个带 1 个参数的重载构造函数,如下所示:
默认:
public Roster() {
this.players = new ArrayList<Player>();
}
超载:
public Roster(String fileName) {
[...]
}
在 Roster 重载构造函数内,我需要使用 Player 类中的实例变量创建一个 Player 类型的新对象。目前看起来是这样的:
Player p1 = new Player();
当前的问题是这不起作用,因为 Player 类没有默认构造函数,而且我不知道如何访问变量。假设有一个默认构造函数,我知道这些变量通常可以在另一个类中访问,如下所示:
Player p1 = new Player();
String name = p1.getName();
double attackStat = p1.getAttackStat();
double blockStat = p1.getBlockStat();
但是,当我尝试设置实例化时:
Player p1 = new Player(p1.getName(), p1.getAttackStat(), p1.getBlockStat());
我收到错误:
"The p1 variable may not have been initialized"
。我想这可能是因为它在实例化中引用了自身。我尝试为此寻找其他解决方案,但似乎没有人偶然发现同样的事情,我无法找到解决方法。
Player p1 = new Player(p1.getName(), p1.getAttackStat(), p1.getBlockStat());
显然这段代码不起作用。在调用p1的getter时,p1还没有初始化。
在初始化p1的过程中,p1还没有被初始化。因此,p1的getter不能使用。
编写该代码的目的是什么?