我尝试复制对象,同时将参数传递给我用来复制的方法。在我尝试复制它之后,在对象的构造函数中,参数变为null。
这是我试图复制的课程:
/**
* 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"方法。返回新对象时,我传入了错误的变量。
答案 0 :(得分:-1)
我刚刚意识到我的错误在于" getThisPerk"方法。返回新对象时,我传入了错误的变量。