“非静态方法不能从静态上下文引用”错误
我有一个名为Media的类,它有一个名为setLoanItem的方法: 
 public void setLoanItem(String loan) { this.onloan = loan; } 
 我试图从一个名为GUI的类以如下方式调用此方法: 
 public void loanItem() { Media.setLoanItem("Yes"); } 
但是我得到错误
非静态方法setLoanItem(java.lang.String)不能从静态上下文中引用
 我只是简单地试图将Media类中的variables从GUI类更改为“Yes”。 
我看过其他相同的错误信息,但没有点击!
 实例方法需要从实例中调用。 你的setLoanItem方法是一个实例方法(它没有static修饰符),它需要为了运行(因为它正在调用( this )的实例上设置一个值)。 您需要先创build该类的实例,然后才能调用该方法: 
 Media media = new Media(); media.setLoanItem("Yes"); 
(顺便说一下,最好使用布尔值而不是包含“是”的string。)
setLoanItem是一个实例方法,这意味着你需要一个Media类的实例来调用它。 您正尝试在Mediatypes本身上调用它。
您可能需要查看一些基本的面向对象的教程来了解静态/实例成员是如何工作的。
  setLoanItem()不是一个静态方法,它是一个实例方法,这意味着它属于该类的特定实例,而不是该类本身。 
从本质上讲,你没有指定要调用该方法的媒体对象,只指定了类名。 可能有成千上万的媒体对象,编译器无法知道你的意思,所以它会相应地产生一个错误。
你可能想传入一个媒体对象来调用该方法:
 public void loanItem(Media m) { m.setLoanItem("Yes"); } 
 您需要正确分离实例数据的静态数据。 在你的代码中, onLoan和setLoanItem()是实例成员。 如果你想引用/调用它们,你必须通过一个实例来完成。 所以你要么 
 public void loanItem() { this.media.setLoanItem("Yes"); } 
要么
 public void loanItem(Media object) { object.setLoanItem("Yes"); } 
取决于你想如何通过这个实例。