所以我有一个类似于
的类解析器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));
^
我真的不确定我在这里做错了什么。它是解析器出错的实例吗?我目前正在管理器构造函数中创建一个解析器对象。
答案 0 :(得分:2)
在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。
答案 1 :(得分:0)
我完全不明白你的意思。我假设
的Parser Object
是parameter
Manager Constructor
然后另一种解决方案是:
public static void main(String[] args) {
Manager manager = null;
String datafile = System.getProperty("import");
if (datafile != null) {
try {
manager = new Manager(new Parser().parseProgramFile(datafile));
...