从字符串中调用方法

时间:2018-02-16 12:50:01

标签: java chat

我正在聊天。我有一切工作。但我想通过键入/然后命令来实现用户可以运行的命令。我在想我会在索引0处测试'/'字符。如果这是真的,我会运行那个“代码”。所以用户基本上会调用一个方法。但我无法弄清楚如何将字符串转换为Java代码。帮助将不胜感激。如果有人有更简单的方法来实现命令,请随时告诉我。

哪里

String userinput = "/test()";

谢谢

2 个答案:

答案 0 :(得分:3)

让用户通过他的输入实际运行代码需要反思' (你可以通过谷歌搜索来找到很多关于这一点的例子' java reflection')。

但请注意:让用户以这种方式执行Java代码是一个很大的安全问题!

我认为对你来说更好的方法是这样的:

public void executeUserCommand(final String userInput) {

    String commandFromUser = // parse fromUserInput
    String param = // parse fromUserInput


    switch (commandFromUser) {
        case "command1":
            // call method with 'param'
            break;
        case "command2":
            // call method with 'param'
            break;

        default:
            // tell the user that his command was not found
            break;
    }

}

答案 1 :(得分:0)

你需要调查Java reflection API才能真正做更多的事情。

在高层次上,我会做的是这样的事情:

/test

/msg "John Smith" "XYZ"

然后,您可以将其解析为三个令牌,为您提供msg和两个参数。

您要做的是使用反射来查看处理聊天功能的对象,并查找名为msg的任何需要两个String参数的方法。

如果您决定允许数字和布尔值等等,那么您将通过解析方面快速进入杂草,所以请注意这一点。

更新:看到了这个:

  

“/ REP(5,” 你好“);

这比解析/rep 5 "Hello"/rep 5, "Hello"

要困难得多
相关问题