2012-02-23 24 views
0

私はBallというクラスを持っています。私はMagicBallImageというクラスでupdateというメソッドを呼び出したいと思います。これを解決する方法別のクラスのメソッドを呼び出す

Ball.java:58: non-static method update() cannot be referenced from a static context. 
MagicBallImage.update(); 

Ball Class 

public boolean isVisible() 
{ 
    if (magicBallState != 1) 
    { 
    return true; 
    MagicBallImage.update(); 
    } 
} 

誰もが知っている:下記の方法のisVisibleは(私はメソッドの更新を呼び出すようにしようとしていますが、私はというエラーを取得していたから、ボールのクラスで)ているのですか?

+0

あなたは私たちを見ることができLCASS MagicBallImage – Jorge

+0

あなたのクラスが健康に見ていない、MagicBallImageは、これまでのように呼び出されますそのreturn文の後に。 MagicBallImageクラスのインスタンスを作成してから、 –

+0

btwを呼び出してください。これは、 'MagicBallImage.update()'の上にreturn文があるので、 'update()'はmagicBallState!= 1の場合には実行されません。 return文を 'MagicBallImage.update()'の下に置きます。編集:ちょうどショーンのコメントを見た、と私は彼に同意する。 –

答えて

3

これは、クラスインスタンスなしで非静的メソッドを呼び出そうとしていることを示しています。メソッドを呼び出すには、MagicBallImageのインスタンスが必要です。または、メソッドをstaticに変換する必要があります。

1

このエラーは、インスタンスMagicBallImageに指定せずに更新を呼び出すことができないことを示しています。

2つのことが起きている可能性が:

    あなたは MagicBallImage.update()方法 static作るのを忘れている
  • 、またはあなたがあなたのisVisible()に利用できるnew演算子を使用してどこかに作成したMagicBallImageのインスタンスを作成する必要があり
  • 方法。

注1:return文の後に来るため、MagicBallImage.update()にはアクセスできません。

注2:ゲッターisVisibleは、別のクラスのインスタンスで何かを更新するなどの副作用を持つことは非常に望ましくありません。それはあなたのデザインに何か問題があることをほぼ100%示しています。

0

このようにこのメソッドを呼び出す場合は、メソッドをstaticと宣言する必要があります。そうでない場合は、update()にアクセスするためにMagicBallImageのインスタンスを宣言する必要があります。

MagicBallImage mbi = new MagicBallImage(); 
mbi.update(); 
+0

あなたが与えたコードを試しましたが、今ではこのエラーが発生しています:MagicBall。java:52:シンボルが見つかりません シンボル:コンストラクタMagicBallImage() 場所:class MagicBallImage MagicBallImage mbi = new MagicBallImage(); – AkshaiShah

+0

あなたのMagicBallImageコンストラクタはどのように見えますか? – talnicolas

+0

公開MagicBallImage(MagicBall paramMagicBall) { super(paramMagicBall); this.magicBall = paramMagicBall; addMouseListener(this);} – AkshaiShah

2
if (magicBallState != 1) 
    { 
    return true; 
    MagicBallImage.update(); 
    } 
  1. 更新を呼び出す前に、それは

  2. update()は効果がありませんので、あなたは、帰国していますstatic methodではなく、静的コンテキストから呼び出すことはできません。すでにオブジェクトスコープになっている場合は、update()またはthis.update()に電話をかけるか、またはo.update()o)というオブジェクトを呼び出してください。

+0

+1唯一の答えは、return文で発言します! – VirtualTroll

0

update()メソッドは、静的作成するかMagicBallImageとコールアップデート(のインスタンスを作成します)

関連する問題