java - 错误: cannot find symbol of Parser

标签 java class parsing object compiler-errors

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

public class Parser implements Serializable {

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

在我的 main 上,我调用解析器通过另一个类构造函数传递其返回,如下所示

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静态方法(选项 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有关静态的更多信息。

关于java - 错误: cannot find symbol of Parser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40700691/

相关文章:

python - 使用 Python 解析(可能是非标准的)XML

java - 类文件 javax/validation/ConstraintViolationException 中非 native 或抽象方法中缺少代码属性

java - 在 servlet 中使用 httpclient 4.1 作为代理

java - 如何在 spring mvc Rest 服务中将请求 URI 的一部分获取到路径变量中

java - Google Calendar Api - 将日期时间转换为日历对象

r - 定义中未定义的插槽类?

c++ - 删除传递给构造函数的对象指针导致错误

Ruby:扩展模块的类

c# - 为什么 AngleSharp 不为交错文本生成 TextNodes?

Java:如何使用JavaParser获取Java类的标识符数量