如何使用另一个类的参数实例化一个类中的对象?

问题描述 投票:0回答:1

我正在开发一个使用 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"
。我想这可能是因为它在实例化中引用了自身。我尝试为此寻找其他解决方案,但似乎没有人偶然发现同样的事情,我无法找到解决方法。

java class object constructor instantiation
1个回答
0
投票
Player p1 = new Player(p1.getName(), p1.getAttackStat(), p1.getBlockStat());

显然这段代码不起作用。在调用p1的getter时,p1还没有初始化。

在初始化p1的过程中,p1还没有被初始化。因此,p1的getter不能使用。

编写该代码的目的是什么?

© www.soinside.com 2019 - 2024. All rights reserved.