2013-05-03 24 views
0

在主類中的方法,我有兩個Java類:調用非主類

BoardManager & 局

BoardManager是主類。裏面包含一塊板子:

public BoardManager(){ 
     Board b = new Board(); 
    } 

    public methodToBeCalled(){} 

    public static void main(String[] args) { 
     new BoardManager(); 
    } 

板是用戶界面。當用戶按下界面上的按鈕時,我希望它在BoardManager類中調用一個方法,但這顯然會出現問題,我不確定如何避開它。

一種解決方案是主要的方法進入董事會等這樣的:

BoardManager boardManager; 

    public Board(){} 

    public void buttonPressed(){ 
     boardManager.methodToCall(); 
    } 

    public static void main(String[] args) { 
     boardManager = new BoardManager(); 
    } 

但是,這只是扔了錯誤有關靜態和unstatic等

解決方案?謝謝!

+1

您無法從非靜態上下文中調用靜態上下文中的方法。 – 2013-05-03 04:56:42

+0

您可以將BoardManager參考傳遞給Board,即Board b = new Board(this);那麼董事會就會知道其父母,並可以調用其方法,但在創建班級依賴之前,您應該三思而後行。 – 2013-05-03 05:01:33

+0

感謝您的回覆。邁克,你能否詳細說明「類依賴」?什麼會是更好的解決方案? – user2341412 2013-05-03 05:03:47

回答

0

無論是這樣的:

class Board{ 
static BoardManager boardManager; 

public Board(){} 

public void buttonPressed(){ 
    boardManager.methodToCall(); 
} 

public static void main(String[] args) { 
    boardManager = new BoardManager(); 
} 
} 

或者這樣:

class Board { 
BoardManager boardManager; 

public Board(){ } 

public void buttonPressed(){ 
    boardManager.methodToCall(); 
} 

public static void main(String[] args) { 
    Board b = new Board(); 
    b.boardManager = new BoardManager(); 
} 
} 

你不能從一個靜態方法(主)調用非靜態字段(BoardManager)。詳細瞭解靜態關鍵字。