【发布时间】:2017-09-18 01:33:26
【问题描述】:
我正在尝试复制一个对象,同时将一个参数传递给我用来复制的方法。在我尝试复制对象后,在对象的构造函数中,参数变为空。
这是我要复制的类:
/**
* Represents the extra health perk
*/
public class ArrowRegen implements Perk
{
private int id = 0;
private double chance = 0.15;
private int level = 0;
private int price = 1000;
private int arrowGain = 0;
private GamePlayer ourPlayer;
public ArrowRegen(){}
public ArrowRegen(GamePlayer ourPlayer)
{
this.ourPlayer = ourPlayer;
if(this.ourPlayer == null)
aa.debug("its null");
}
@Override
public Perk getThisPerk(GamePlayer player)
{
aa.debug("returning an arrow regen");
if(player == null)
aa.debug("player is null? somehow?");
return new ArrowRegen(ourPlayer);
}
}
- 直到构造函数中的“其为空”注释点之前,没有任何内容为空。 *
这是我调用副本的地方:
player.addActivePerks(PerkEngine.getPerk(1).getThisPerk(player));
(玩家是一个 GamePlayer 对象)
这是 PerkEngine 位:
/**
* Gets a perk by it's ID
* @param id The Perk's ID
* @return The Perk with the specified ID
*/
public static Perk getPerk(int id)
{
for(Perk perk : perks)
{
if(perk.getID() == id)
{
return perk;
}
}
// This will never return null
return null;
}
编辑:
我刚刚意识到我的错误在于“getThisPerk”方法。返回新对象时,我传入了错误的变量。
【问题讨论】: