"无法从静态上下文引用非静态方法"错误

Dan*_*kay 69 java static compiler-errors

我有一个名为的类Media,它有一个名为的方法setLoanItem:

public void setLoanItem(String loan) {
    this.onloan = loan;
}
Run Code Online (Sandbox Code Playgroud)

我试图从以GUI下列方式命名的类中调用此方法:

public void loanItem() {
    Media.setLoanItem("Yes");
}
Run Code Online (Sandbox Code Playgroud)

但是我收到了错误

非静态方法setLoanItem(java.lang.String)不能从静态上下文引用

我只是试图onloanMedia类中的变量更改为"是" GUI.

我看过其他主题有相同的错误消息,但没有点击!

Nat*_*hes 73

需要从实例调用实例方法.你的setLoanItem方法是一个实例方法(它没有修饰符static),它需要它才能运行(因为它在实例上设置了一个它被调用的值(this)).

您需要先创建该类的实例,然后才能调用该方法:

Media media = new Media();
media.setLoanItem("Yes");
Run Code Online (Sandbox Code Playgroud)

(顺便说一下,最好使用布尔值而不是包含"是"的字符串.)


Joe*_*nos 11

setLoanItem是一个实例方法,这意味着您需要一个Media类的实例才能调用它.您试图在媒体类型本身上调用它.

您可能希望查看一些基本的面向对象的教程,以了解静态/实例成员的工作方式.