2016-06-23 5 views
-2

別の方法でそれを使用しようとすると、それはまだコンストラクタ私は、コンストラクタの内部で変数を初期化しますが、私はそうここ

private ActionbarTitleObject timer = TitleFactory.newBarTitle(""); 
private Plugin plugin; 
HashMap<String, Parkour> parkours = null; 

public MineJump() {} 

public MineJump(ArrayList<Player> players, String configPath, Plugin plugin) 
{ 
    super(players); 
    this.plugin = plugin; 
    parkours = Parkour.load(configPath, players); 
    System.out.println(parkours.get("p1").getCurrentSpawn()); //here I get the right value 
} 

ヌルされるのですが、私はこの方法でparkoursにハッシュマップを使用しようとすると、

@EventHandler 
public void onPlayerMove(PlayerMoveEvent e) 
{ 
    System.out.println(parkours.get("p1").getCurrentSpawn()); //parkours is null here :(
} 

NullPointerExceptionが発生します。何故ですか?

私はこれだけに非引数コンストラクタを使用:Bukkit.getPluginManager().registerEvents(new MineJump(), this);

は、エラーが発生することがありましたこと?はいの場合は、なぜ私に説明することができればいいです。 :)

+0

あなたは、どのようにあなたが 'parkours'をインスタンス化に関する詳細な情報を提供してもらえますか? –

+1

引数なしコンストラクタを使用しましたか?これはあなたのヌルポインタを説明します。 – wtfzn

+0

デバッガを使用します。例外をどこかで静かに飲み込むかどうか確認してください。 – Fildor

答えて

0

super()を呼び出すとき、あなたは何の引数のコンストラクタを使用しない副作用の結果として呼び出されていることです。このコンストラクタでは、parkoursにnull以外の値を設定しません。あなたはこのような引数を持つ2番目のコンストラクタを使用する必要が

Bukkit.getPluginManager().registerEvents(new MineJump(players, configPath, plugin), this); 
0

可能な説明はonPlayerMoveはあなたが説明したように、コンストラクタ

関連する問題