簡體   English   中英

在另一個類中調用一個方法

[英]Call a method in another class

我有一個名為Ball的類,我想在一個名為MagicBallImage的類中調用一個名為update的方法。 下面是Ball類中的isVisible()方法,我試圖從該方法中調用方法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();
  }
}

有人知道如何解決嗎?

它告訴您,您正在嘗試在沒有類實例的情況下調用非靜態方法。 您或者需要一個MagicBallImage實例來調用該方法,或者需要將該方法轉換為static

 if (magicBallState != 1)
  {
    return true;
    MagicBallImage.update();
  }
  1. 您在致電更新之前要返回,因此它不會起作用

  2. update()不是static method ,因此您不能從靜態上下文中調用它。 如果您已經在對象范圍內,則可以簡單地調用update()this.update() ,或者調用o.update() ,其中o是您的對象。

此錯誤告訴您,如果不指定MagicBallImage 實例 ,則無法調用update。

可能發生了兩件事:

  • 您忘記了將MagicBallImage.update()方法設置為static ,或者
  • 您需要使用isVisible()方法可用的new運算符來創建在某個位置創建的MagicBallImage實例。

注意1:現在無法使用MagicBallImage.update()編碼,因為它位於return語句之后。

注意2:讓isVisible具有副作用,例如在另一個類的實例中更新某些內容,這是非常不希望的。 這幾乎是100%的跡象表明您的設計有問題。

如果要這樣調用此方法,則必須將該方法聲明為static 如果不是,則必須聲明一個MagicBallImage實例才能訪問update()

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

使update()方法為靜態,或創建MagicBallImage的實例並調用update()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM