所以我有一个类似这样的类解析器
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/