2017-09-18 6 views
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 "メソッド。新しいオブジェクトを返すとき、私は間違った変数を渡します。

答えて

-1

「getThisPerk」メソッドで私の間違いを認識しました。新しいオブジェクトを返すとき、私は間違った変数を渡します。

+0

それは、削除された答えで指摘したいことです。 –

関連する問題