所以我有一个类似这样的类解析器

public class Parser implements Serializable {

     //parse Programfile with name=filename
     public Program parseProgramFile(String filename){
         /*method defined*/
         return Program
     }

在我的主设备上,我正在调用解析器,将其返回值传递给另一个这样的类构造函数
public static void main(String[] args) {
      Manager manager = new Manager();
      String datafile = System.getProperty("import");
      if (datafile != null) {
        try {
    //Import file into Manager through Parser instance
    manager(parseProgramFile(datafile));

这就是我不断弄错的地方
error: cannot find symbol
manager(parseProgramFile(datafile));
        ^

我真的不确定在这里我做错了什么。解析器的实例化出错了吗?我目前在经理构造函数中创建一个解析器对象。

最佳答案

在Java中,静态方法(如main())可以直接访问/调用其他静态成员,要从静态方法访问非静态方法,您需要一个类的对象(该对象包含非静态方法)。

因此,您需要创建Parser类的对象并调用parseProgramFile方法(选项1),或者可以将parseProgramFile方法更改为static(选项2)。

选项(1):为Parser创建对象并从main()调用

Parser parser = new Parser();
parser.parseProgramFile(parser.datafile);

选项(2):将parseProgramFile方法设置为static
public static Program parseProgramFile(String filename){
         /*method defined*/
         return Program
     }

然后在main()中,您可以直接将其作为manager(parseProgramFile(datafile));调用

您可以引用here了解更多有关static的信息。

10-07 16:31