无法从静态上下文引用非静态方法getText()

uni*_*nit 1 java

我编写了以下代码,但不断得到一个'非静态方法getText()不能从静态上下文引用'错误.

有人可以帮助我在这里走上正轨吗?

public class ISBNText extends JTextField
{  
   protected static String bookNum;
   protected JTextField  bookText; 
   public ISBNText() 
   {
       super(20);
       bookText = new JTextField();
   }   
   public String getISBN()
   {           
      String bookNum = ISBNText.getText();
      return bookNum;
   }
   private String validateISBN(String bookNum)
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 12

这一行:

String bookNum = ISBNText.getText();
Run Code Online (Sandbox Code Playgroud)

应该只是:

String bookNum = getText();
Run Code Online (Sandbox Code Playgroud)

这隐含着:

String bookNum = this.getText();
Run Code Online (Sandbox Code Playgroud)

该调用ISBNText.getText()试图将其称为静态方法 - 即与该类型相关联,而不是与该类型的任何特定实例相关联.这显然是没有意义的,因为文本与类型的实例相关联.这两个方案我展示你是等价的,找到的文字ISBNTextgetISBN已呼吁.

  • @unit:当你在方法(或变量)之前使用类名称(如ISBNText)时,编译器会认为你正在尝试引用静态.如果存在同名的非静态元素,则会出现您遇到的错误. (3认同)