[英]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();
}
您在致電更新之前要返回,因此它不會起作用
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.