2017-03-05 6 views
-4

Kann mir jemand sagen, warum das nicht funktioniert? Es ist eine grundlegende OOP-Funktion. Es funktioniert, aber aus irgendeinem Grund hat es aufgehört zu arbeiten.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()); 
     } 
    } 

} 

Ich nenne es dies wie:

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

Vielen Dank!

+1

Wo wird das 'MainInfoBoard' initialisiert? Mit nur Ihrem aktuellen Code wird es wahrscheinlich eine "NullPointerException" auslösen. (Was sollte man ganz einfach lösen können, ich gese?). Neben "nicht arbeiten" ist keine korrekte Beschreibung dessen, was anders als das, was Sie erwartet haben, ging. Bitte geben Sie an, was Sie erwartet haben und welches Ergebnis Sie erhalten haben, einschließlich Code, Bildern und Stacktraces, falls relevant. – n247s

+0

@ n247s Ich möchte den Spielernamen auf die Konsole übertragen. Wenn der Spieler beitritt, schreibt die Konsole zum Beispiel: Sein Name ist eNcoo. – eNcoo

+0

Sie rufen 'echoName()' nirgends auf. – Esko

Antwort

2

Ihre MainInfoboard initialisieren initialisiert.

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()); 
    } 
} 
} 

Wenn es ein NullPointerException ist. Vielleicht möchten Sie uns den Fehler mitteilen, den Sie bekommen.

2

Ihre private MainInfoboard mi; Eigenschaft der Klasse InfoboardManager nie