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.
Thats, was auf gelöschte Antwort hinweisen wollte. –