我有一个名为Ball的类,我想在名为MagicBallImage的类中调用一个名为update的方法。下面是Ball类中的方法isVisible(),我试图从中调用方法更新,但是我收到一条错误说:
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();
}
}
任何人都知道如何解决这个问题?
答案 0 :(得分:3)
它告诉你,你没有尝试在没有类实例的情况下调用非静态方法。您需要MagicBallImage
的实例来调用方法,或者您需要将方法转换为static
。
答案 1 :(得分:2)
if (magicBallState != 1)
{
return true;
MagicBallImage.update();
}
您在调用update之前返回,因此无效
update()
不是static method
,因此您无法从静态上下文中调用它。如果您已经在对象范围内,则可以致电update()
或this.update()
,或致电o.update()
,其中o
是您的对象。
答案 2 :(得分:1)
此错误告诉您,如果未指定MagicBallImage
的实例,则无法调用更新。
可能发生了两件事:
MagicBallImage.update()
方法static
或MagicBallImage
方法可用的new
运算符创建您在某处创建的isVisible()
实例。注1:现在编码的方式,MagicBallImage.update()
无法访问,因为它位于return
语句之后。
注2:getter isVisible
非常不希望产生副作用,例如在另一个类的实例中更新某些内容。几乎100%的迹象表明您的设计出了问题。
答案 3 :(得分:0)
如果要像这样调用此方法,则必须声明方法static
。如果不是,您必须声明MagicBallImage
的实例才能访问update()
:
MagicBallImage mbi = new MagicBallImage();
mbi.update();
答案 4 :(得分:0)
使update()方法成为静态或创建MagicBallImage的实例并调用update()