2017-03-05 5 views
-4

これはなぜ動作していないのですか? 基本的なOOP機能です。それは動作しますが、何らかの理由で動作を停止しました。Java Bukkit OOP

public class InfoboardManager { 
    private MainInfoboard mi; 
    private Player p; 

    public InfoboardManager(Player p) { 
     this.p = p; 
    } 

    public MainInfoboard getMainInfoboard() { 
     return mi; 
    } 

    public class MainInfoboard { 
     public void echoName() { 
      System.out.println("His name is " + p.getName()); 
     } 
    } 

} 

私はこのようにそれを呼んでいる:

@EventHandler 
    public void onPlayerJoin(PlayerJoinEvent e) { 
     InfoboardManager ib = new InfoboardManager(e.getPlayer()); 
     MainInfoboard mi = ib.getMainInfoboard(); 
     mi.echoName(); 
     e.setJoinMessage(null); 
    } 

はどうもありがとうございました!クラスInfoboardManager

+1

'MainInfoBoard'はどこで初期化されていますか?あなたの現在のコードだけでは、NullPointerExceptionがスローされます。 (あなたは私がかなり簡単に解決できるはずですか?)。 「働かない」以外に、あなたが期待したものとは何が違うのかについての適切な記述ではありません。あなたが期待したものと、関連している場合はコード、画像、スタックトレースなど、あなたが得た結果を含めてください。 – n247s

+0

@ n247sプレイヤーの名前をコンソールに表示したい。だから、プレーヤーが参加すると、コンソールはex:のために書くだろう彼の名前はeNcooです。 – eNcoo

+0

あなたはどこでも 'echoName()'を呼び出すことはありません。 – Esko

答えて

2

あなたMainInfoboardを初期化し、初期化されることはありません。

public class InfoboardManager { 
private MainInfoboard mi; 
private Player p; 

public InfoboardManager(Player p) { 
    this.p = p; 
    this.mi = new MainInfoboard(); 
} 

public MainInfoboard getMainInfoboard() { 
    return mi; 
} 

public class MainInfoboard { 
    public void echoName() { 
     System.out.println("His name is " + p.getName()); 
    } 
} 
} 

NullPointerExceptionの場合。あなたは私たちにあなたが得ているエラーを伝えたいかもしれません。

2

あなたprivate MainInfoboard mi;プロパティは

関連する問題