2017-09-18 1 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); 
    } 
} 
  • 아무것도 "는 널 (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 "방법. 새 객체를 반환 할 때 잘못된 변수를 전달합니다.

답변

-1

나는 실수가 "getThisPerk"메소드에 있다는 것을 알았습니다. 새 객체를 반환 할 때 잘못된 변수를 전달합니다.

+0

그게 삭제 된 대답을 지적하고 싶습니다. –

관련 문제