static から非静的drawScore()
メソッドを呼び出そうとしましたが、 の行でcalldrawScore()
エラーが発生しました。その行にマウスを合わせると、 と表示されます。"cannot find symbol constructor Game"
Game draw = new Game();
calldrawScore()
"GameScreen (Game) in Game cannot be applied to ()"
4 に答える
-静的メソッドは非静的変数またはメソッドにアクセスできないという経験則。
-メンバーが に属しているのと同じように にstatic member
属しているため、静的メンバーが非静的メンバーにアクセスしようとすると、どのオブジェクト メンバーがアクセスされているかが明確ではないため、JAVA では禁止されています。class
non-static
object
あなたのクラス GameScreen コンストラクターは、パラメーターとして Game クラス オブジェクトを取得しています。現在の Game インスタンスを取得して引数として渡すか、Gamescreen クラスでデフォルトのコンストラクターを作成することができます。
おそらく、「getScore(int x)」を次のように変更できれば:
public static int getScore(int x, GameScreen gs) {
score = x;
gs.drawScore();
return score;
}
これで、「GameScree」で呼び出すことができます
GameScreen.getScore(valueSome, yourObject);
別の方法は、すべての GameScreen をSingletonに変更することです
そのためにはGameScreen d = new GameScreen()
、 の引数が 0 のコンストラクターが必要ですGameScreen
。そのようなコンストラクタはありません。
とにかく、あなたのコードはかなり悪いように見えGameScreen
ますcalldrawScore()
.
静的メソッドと非静的メソッドの違いを読む必要があると思います。次に、戻って設計し、より適切に実装します。