我尝试从静态drawScore()
调用非静态calldrawScore()
方法,但我在"cannot find symbol constructor Game"
的{{1}}行上遇到了错误Game draw = new Game();
。当我用鼠标移过该行时,它会显示calldrawScore()
。
答案 0 :(得分:2)
- 根据经验,静态方法无法访问任何非静态变量或方法。
- 这是因为static member
属于class
,其中non-static
成员属于object
,因此静态成员尝试要访问非静态成员,将不清楚访问哪些对象成员,因此在JAVA中禁止它。
答案 1 :(得分:0)
也许你可以将“getScore(int x)”改为:
public static int getScore(int x, GameScreen gs) {
score = x;
gs.drawScore();
return score;
}
现在您可以通过
在“GameScree”中调用它GameScreen.getScore(valueSome, yourObject);
另一种方法是将所有GameScreen更改为Singleton
答案 2 :(得分:0)
您的GameScreen类构造函数将Game类对象作为参数。您可以获取当前的Game实例并将其作为参数传递,也可以在Gamescreen类中创建默认构造函数。
答案 3 :(得分:0)
要做GameScreen d = new GameScreen()
,你需要GameScreen
的0参数构造函数。你没有这样的构造函数。
无论如何,您的代码看起来很糟糕,因为您要在每个GameScreen
中创建新的calldrawScore()
...
我认为你需要阅读静态方法和非静态方法之间的区别。然后返回,设计并更好地实施。