0
私はコピーするために使用しているメソッドにパラメータを渡している間にオブジェクトをコピーしようとしています。コピーしようとした後のオブジェクトのコンストラクタで、パラメータがnullになります。オブジェクトをコピーしようとすると非常に奇妙なNPE
これは私がコピーしようとしているクラスは、次のとおりです。
/**
* 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);
}
}
- 何が「そのヌル」コメントでのコンストラクタのポイントまでヌルではありません。 *
私はからコピーを呼ぶところである:ここでは
(プレイヤーがGamePlayerオブジェクトである)
player.addActivePerks(PerkEngine.getPerk(1).getThisPerk(player));
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;
}
はEDIT:
私のミスは "g etThisPerk "メソッド。新しいオブジェクトを返すとき、私は間違った変数を渡します。
それは、削除された答えで指摘したいことです。 –