java - 我可以将函数名称存储在最终的 HashMap 中以供执行吗?

标签 java dynamic

我正在构建一个像 Flex 4.5 中的终端仿真器一样工作的管理 Controller 。 服务器端是使用Java编程语言的tomcat服务器上的Red5。

当用户在他的文本输入中输入命令时,该命令被发送到 red5,在 red5 中我检查命令是否存在并返回正确的输出,如果命令或参数不匹配则返回错误。

所以现在我使用 if (command.equals("..") {} else if (command.equals(...

有没有一种方法可以存储每个命令中应该执行的函数名称或对函数的引用并执行它?

例子:

// creating the hasmap
HashMap<String,Object> myfunc = new HashMap<String,Object>();

// adding function reference
myfunc.put("help",executeHelp);

或者……

myfunc.put("help", "executeHelp"); // writing the name of the function

然后

void receiveCommand(String command, Object params[]( {
 myfunc.get(command).<somehow execute the referrened function or string name ? >
}

有什么想法吗?

谢谢!

最佳答案

您可以使用反射,但我建议使用更简单的方法。

您可以创建抽象类或接口(interface),并使用抽象方法执行。示例:

interface Command {
    void execute(Object params[]);
}

class Help implements Command {
    void execute(Object params[]) {
        // do the stuff
    }
}

现在你的 hashmap 可以是:

// creating the hasmap
HashMap<String,Command> myfunc = new HashMap<String,Command>();

// adding function reference
myfunc.put("help", new Help());

然后:

void receiveCommand(String command, Object params[]) {
    myfunc.get(command).execute(params);
}

关于java - 我可以将函数名称存储在最终的 HashMap 中以供执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8200243/

相关文章:

java - 如何将匿名 JavaScript 对象从 Java 传递到 GWT 中的 JavaScript?

javascript - 引导动态表单字段不起作用

python - 循环的可变长度 - tensorflow

java - 如何动态获取edittext的值?

excel - 如何从动态命名范围中进行 OFFSET 并在 SUMPRODUCT 中使用该范围?

java - HashMap 到 csv/excel 很容易吗?

java - 有没有办法通过 AuditQuery 识别哪些属性已被修改?

java - 从 Spring 3.1.2 迁移到 4.1.6 后,DefaultListableBeanFactory Autowiring ,而不是自己实现

angular - 动态插入 ng-content 选择

java - [vert.x]Vertx tcp 套接字在写入快速时读取部分消息