Вызовите метод в другом классе - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть класс с именем Ball, и я хочу вызвать метод с именем update в классе с именем MagicBallImage.Ниже приведен метод isVisible () в классе Ball, из которого я пытаюсь вызвать обновление метода, но получаю сообщение об ошибке:

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();
  }
}

Кто-нибудь знает, как решить эту проблему?

Ответы [ 5 ]

3 голосов
/ 23 февраля 2012

Это говорит о том, что вы пытаетесь вызвать нестатический метод без экземпляра класса.Вам либо нужен экземпляр MagicBallImage для вызова метода, либо вам нужно преобразовать метод в static.

2 голосов
/ 23 февраля 2012
 if (magicBallState != 1)
  {
    return true;
    MagicBallImage.update();
  }
  1. вы возвращаетесь перед вызовом обновления, поэтому оно не будет иметь никакого эффекта

  2. update() не является static method, поэтому вы не можете вызвать его из статического контекста. Вы можете просто позвонить update() или this.update(), если вы уже находитесь в области видимости объекта, или позвонить o.update(), где o - ваш объект.

1 голос
/ 23 февраля 2012

Эта ошибка говорит о том, что вы не можете вызвать update, не указав экземпляр из MagicBallImage.

Могли произойти две вещи:

  • Вы забыли сделать метод MagicBallImage.update() static, или
  • Вам нужно сделать экземпляр MagicBallImage, который вы создали где-то, используя оператор new, доступный для вашего isVisible() метода.

Примечание 1: Способ его кодирования сейчас MagicBallImage.update() недоступен, поскольку он идет после оператора return.

Примечание 2: для получателя isVisible очень нежелательно иметь побочные эффекты, такие как обновление чего-либо в экземпляре другого класса. Это почти 100% признак того, что с вашим дизайном что-то не так.

0 голосов
/ 23 февраля 2012

Сделайте метод update () статическим или создайте экземпляр MagicBallImage и вызовите update ()

0 голосов
/ 23 февраля 2012

Если вы хотите вызвать этот метод следующим образом, метод должен быть объявлен static.Если это не так, вы должны объявить экземпляр MagicBallImage для доступа к update():

MagicBallImage mbi = new MagicBallImage();
mbi.update();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...