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);
}
}
- 아무것도 "는 널 (null)"주석의 생성자 지점까지 널 (null)입니다. *
I부터 복사 호출하는 곳이다
/**
* 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 :
player.addActivePerks(PerkEngine.getPerk(1).getThisPerk(player));
여기
PerkEngine 비트된다 (플레이어 GamePlayer 객체이다)
나는 내 실수가 "g etThisPerk "방법. 새 객체를 반환 할 때 잘못된 변수를 전달합니다.
그게 삭제 된 대답을 지적하고 싶습니다. –