gpt4 book ai didi

java - 无法从静态上下文引用非静态变量 favPic

转载 作者:太空宇宙 更新时间:2023-11-04 07:38:56 24 4
gpt4 key购买 nike

我的代码遇到了一个问题。当我尝试调用 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);


}


}

最佳答案

favPicHouse 类的非静态实例成员,并且您尝试在静态 main 方法中引用它。您需要创建一个 Picture 实例并将其传入:

Picture pic = new Picture(FileChooser.pickAFile ());
PhDsHouse.setFavouritePicture(pic);

但是,此代码似乎存在一些更深层次的问题,因为您的 setFavoritePicture 方法实际上并未根据传递的参数设置 favPic,而是根据 FileChooser.pickAFile 设置它,然后将该值分配回传递的参数(这不会实现任何结果)。

也许您想做这样的事情:

public void setFavoritePicture (Picture pRef)
{
favPic = pRef;
}

更新:关于您的评论:

I need to, within the 'setFavoritePicture' method, pick a picture, using 'FileChooser.pickAFile ()'. Thats the whole point of this method.

既然如此,为什么还需要参数呢?也许是这样的?

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 在方法外部实例化并传入)。

关于java - 无法从静态上下文引用非静态变量 favPic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16368062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com