我试图从 static 调用非静态drawScore()
方法,calldrawScore()
但我"cannot find symbol constructor Game"
在Game draw = new Game();
. calldrawScore()
当我将鼠标移过那条线时,它会说"GameScreen (Game) in Game cannot be applied to ()"
。
问问题
156 次
4 回答
2
-静态方法不能访问任何非静态变量或方法的经验法则。
-因为static member
属于class
wherenon-static
成员属于object
,所以当静态成员试图访问非静态成员时,将不清楚正在访问哪个对象成员,因此在 JAVA 中是禁止的。
于 2013-09-10T09:34:00.837 回答
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
于 2013-09-10T09:31:56.803 回答
0
您的类 GameScreen 构造函数将 Game 类对象作为参数。您可以获取当前 Game 实例并将其作为参数传递,也可以在 Gamescreen 类中创建默认构造函数。
于 2013-09-10T09:35:55.480 回答
0
要做到这一点GameScreen d = new GameScreen()
,您需要为GameScreen
. 你没有这样的构造函数。
无论如何,你的代码看起来很糟糕,因为你GameScreen
在每个calldrawScore()
......
我认为您需要阅读静态方法和非静态方法之间的区别。然后回去,设计它并更好地实施。
于 2013-09-10T09:37:03.213 回答