【问题标题】:Very weird NPE when trying to copy an object尝试复制对象时非常奇怪的 NPE
【发布时间】: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”方法。返回新对象时,我传入了错误的变量。

【问题讨论】:

    标签: java object copy clone


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 2015-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多