Java 从非主类调用主类中的方法
我有两个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
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