2017-09-18 3 views
0

Ich versuche ein Objekt zu kopieren, während ich einen Parameter an die Methode übergebe, mit der ich kopiere. Im Konstruktor für das Objekt, nachdem ich versucht habe, es zu kopieren, wird der Parameter null.Sehr seltsame NPE beim Versuch ein Objekt zu kopieren

Dies ist die Klasse, die ich zu kopieren bin versucht:

/** 
* 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); 
    } 
} 
  • nichts, bis der Punkt im Konstruktor an dem „seine Null“ Kommentar null auf.
  • *

Dies ist, wo ich die Kopie von nennen:

player.addActivePerks(PerkEngine.getPerk(1).getThisPerk(player)); 

(Spieler ist ein Gameplayer-Objekt)

Hier wird das PerkEngine Bit:

/** 
* 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:

Ich habe gerade festgestellt, mein Fehler war in der "g etThisPerk "Methode. Wenn ich das neue Objekt zurückgebe, gebe ich die falsche Variable ein.

Antwort

-1

Ich habe gerade festgestellt, dass mein Fehler in der "getThisPerk" -Methode war. Wenn ich das neue Objekt zurückgebe, gebe ich die falsche Variable ein.

+0

Thats, was auf gelöschte Antwort hinweisen wollte. –

Verwandte Themen