2017-03-05 71 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); 
    } 

非常感謝您!

+1

MainInfoBoard初始化在哪裏?只用你當前的代碼,它會拋出一個'NullPointerException'。 (你應該能夠很容易地解決我的問題?)。除了「不工作」不是對你所期望的有什麼不同的正確描述。請包括您的預期,以及獲得的結果,包括代碼,圖像和堆棧跟蹤(如果相關)。 – n247s

+0

@ n247s我想將控制檯的玩家姓名打印出來。所以當玩家加入時,控制檯會寫出來:例如,他的名字是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;InfoboardManager類的屬性初始化從未