尝试复制对象时非常奇怪的NPE

时间:2017-09-18 01:33:27

标签: java object copy clone

我尝试复制对象,同时将参数传递给我用来复制的方法。在我尝试复制它之后,在对象的构造函数中,参数变为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"方法。返回新对象时,我传入了错误的变量。

1 个答案:

答案 0 :(得分:-1)

我刚刚意识到我的错误在于" getThisPerk"方法。返回新对象时,我传入了错误的变量。