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