通过hashmap将参数传递给java中的函数

时间:2015-12-15 22:39:20

标签: java

我试图在java中构建一个命令行工具,例如,如果我在控制台" dir c:/...."中写下,它将激活我的Dir类并且将会得到" c:/...." path作为Dir类的参数,并使用hashmap执行此操作。

我不知道如何通过命令行和hashmap传递参数, 它甚至可能吗?

每个命令都有它自己的类,它实现了主要的"命令"接口,带有doCommand()函数。

在CLI类中运行start()函数后,它应该接受命令并执行请求的命令。

命令界面:

public interface Command {
   public void doCommand();
}

我的CLI类:

public class CLI {

BufferedReader in;
PrintWriter out;

HashMap<String, Command> hashMap;
Controller controller;

public CLI(Controller controller, BufferedReader in, PrintWriter out,
        HashMap<String, Command> hashMap) {
    this.in = in;
    this.out = out;
    this.hashMap = hashMap;
}

public void start() {

    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                out.println("Enter a command please:");
                String string = in.readLine();
                while (!string.equals("exit")) {
                    Command command = hashMap.get(string);
                    command.doCommand();

                    string = in.readLine();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }).start();
}
}

让我举一个例如我的DirCommmand,正如我之前所说,它应该识别&#34; dir&#34;字符串通过我的hashMap配置,并应将下一个字作为路径的字符串参数传递

public class DirCommand implements Command {

@Override
public void doCommand() {
    System.out.println("doing dir command...");

}

}

和我的hashmap配置:

    hashMap.put("dir", new DirCommand());

在一个不同的类中设置hashMap配置,并在项目开始时将其传递给CLI类的hashMap对象。

我很想得到一些帮助,因为我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

首先,为了将参数传递给 doCommand ,我要做的是使用变量参数列表,如:

public interface Command {
    public void doCommand(String... params);
}

其次,我会将空格上的输入字符串拆分为:

String[] result = command.split(" ");

最后,命令将是结果[0] ,其余的将传递给 doCommand 方法。