Java 从非主类调用主类中的方法

Java 从非主类调用主类中的方法,java,static,main,Java,Static,Main,我有两个Java类: 董事经理及 董事会 董事会经理是主要的班级。里面有一块板: public BoardManager(){ Board b = new Board(); } public methodToBeCalled(){} public static void main(String[] args) { new BoardManager(); } 主板是用户界面。当用户按下界面上的按钮时,我希望它调用Boar

我有两个Java类:

董事经理及 董事会

董事会经理是主要的班级。里面有一块板:

    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();
    }
但这只是抛出了关于静态和非静态等方面的错误

解决方案?谢谢

这两者之一:

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

不能从静态方法(main)调用非静态字段(BoardManager)。阅读有关static关键字的更多信息。

您不能从非静态上下文调用静态上下文中的方法。您可以将BoardManager引用传递给Board,即Board b=新的Board(此);然后Board会知道它的父对象,并且可以调用它的方法,但是在创建类依赖项之前,您应该三思而后行。谢谢您的回复。Mike,你能详细说明一下“类依赖性”吗?什么是更好的解决方案?如果它完成了任务,那么它没有问题:p这就是我所做的:我有BoardManager是一个主类,它创建了一个Board,并像您所说的那样通过它,Board b=new Board(这个)。在Board中,我有BoardManager bManager,但当我尝试调用方法时,我得到了“局部变量bManager在内部类中被访问;需要声明为final”。在将bManager设置为final之后,它现在可以工作了,但这似乎是一个非常混乱的解决方案:S