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