0

假设我有一个文件,它的名称是 file.txt 它由 java 中反射方法的脚本组成。假设其中一些是:

new <id> <class> <arg0> <arg1> … creates a new instance of <class> by using 
a constructor that takes the given argument types and stores the result in <id>.
call <id> <method> <arg0> <arg1> …  invokes the specified <method> that 
takes the given arguments on the instance specified by <id> and prints the answer. 
print <id>  prints detailed information about the instance specified by <id>. See 
below for Object details.

文件中的脚本将在程序中作为字符串提取。我将如何将其转换为我上面指定的参数以进行反射。我对这个视而不见!一些代码帮助的一些描述将不胜感激,因为我是 java 新手。

4

1 回答 1

1

首先,这是一个解析问题。您需要做的第一件事是将输入分解为可管理的块。由于您似乎使用空格来分隔组件,因此这应该是一件相当容易的事情。

由于每行有一个命令,因此您要做的第一件事是将它们分成几行,然后根据空格分成单独的字符串。解析是一个足够大的话题,值得提出自己的问题。

然后,您将逐行进行,在该行的第一个单词上使用 if 语句来确定应该执行什么命令,然后根据正在对它们执行的操作解析其他单词。

像这样的东西:

public void execute(List<String> lines){
    for(String line : lines){
        // This is a very simple way to perform the splitting. 
        // You may need to write more code based on your needs.
        String[] parts = lines.split(" ");

        if(parts[0].equalsIgnoreCase("new")){
            String id = parts[1];
            String className = parts[2];
            // Etc...
        } else if(parts[0].equalsIgnoreCase("call")){
            String id = parts[1];
            String methodName = parts[2];
            // Etc...
        }
    }
}
于 2013-03-03T19:17:58.657 回答