使用输入字符串生成对象和函数反射

时间:2013-03-03 18:57:27

标签: java reflection

假设我有一个文件,其名称是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的新手。

1 个答案:

答案 0 :(得分: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...
        }
    }
}