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

Java 尝试复制对象时非常奇怪的NPE,java,object,copy,clone,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; priv

我试图复制一个对象,同时将一个参数传递给用于复制的方法。在我尝试复制对象后,在对象的构造函数中,参数变为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);
    }
}
  • 在构造函数中的“itsnull”注释处的点之前,没有任何内容是空的*
在这里,我将副本称为:

player.addActivePerks(PerkEngine.getPerk(1).getThisPerk(player));
(玩家是游戏玩家对象)

这是发动机钻头:

 /**
 * 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;
}
编辑:


我刚刚意识到我的错误是在“Gethispark”方法中。返回新对象时,我传入了错误的变量。

我刚刚意识到我的错误在“GetThispark”方法中。返回新对象时,传入了错误的变量