[英]non-static variable favPic cannot be referenced from a static context
我在下面的代码中遇到了一个问题。 我尝试调用setFavoritePicture
方法时,在main方法中setFavoritePicture
遇到编译器错误。 它说不能从静态上下文引用非静态变量favPic。 我是Java的新手,因此对此提供任何帮助将不胜感激! 非常感谢!
public class House
{
String owner;
Picture pRef;
Picture [] picArray;
Picture favPic;
public void setFavoritePicture (Picture pRef)
{
Picture favPic = new Picture (FileChooser.pickAFile ());
pRef = favPic ;
}
public static void main (String [] args)
{
House PhDsHouse = new House ("Mad PH.D.");
PhDsHouse.setFavoritePicture (favPic);
}
}
favPic
是House
类的一个非静态实例成员,您正尝试从您的静态 main
方法中引用它。 您需要创建一个Picture
实例并将其传递给它:
Picture pic = new Picture(FileChooser.pickAFile ());
PhDsHouse.setFavouritePicture(pic);
但是,此代码似乎存在更深层的问题,因为您的setFavoritePicture
方法实际上favPic
根据传递的参数设置favPic
,而是根据FileChooser.pickAFile
对其进行设置,然后将该值分配回传递的参数(没有)。
也许您想做这样的事情:
public void setFavoritePicture (Picture pRef)
{
favPic = pRef;
}
更新:关于您的评论:
我需要在“ setFavoritePicture”方法内,使用“ FileChooser.pickAFile()”来选择图片。 多数民众赞成在整个方法。
在这种情况下,为什么根本需要一个参数? 也许像这样?
public class House
{
String owner;
Picture [] picArray;
Picture favPic;
public void setFavoritePicture ()
{
Picture pic = new Picture (FileChooser.pickAFile ());
this.favPic = pic;
}
... /* Rest of your class here */
public static void main (String [] args)
{
House PhDsHouse = new House ("Mad PH.D.");
PhDsHouse.setFavoritePicture();
}
}
在上面的代码中,您实例化了House
,然后调用其setFavoritePicture
方法。 如果创建新图片的所有逻辑都由该方法处理,包括对FileChooser.pickAFile
的调用,则您无需传递任何信息。
话虽如此,在我看来setFavoritePicture
的责任应该是设置对象的收藏图片,并且处理文件选择和用户输入的操作应该在其他地方进行(例如在我之前的示例中,在方法外部实例化pRef
和通过)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.