Java 中根据用户输入确定要调用的方法

发布于 2024-10-15 14:14:25 字数 325 浏览 7 评论 0原文

所以我正在用 Java 编写一个简单的 IRC 客户端。截至目前,我正在尝试确定用户正在输入哪些命令。我知道我可以使用一堆 if-else 语句,但这不是很好的做法。我想过使用开关,但我正在尝试寻找替代方案。

例如:我有一些命令,PASS,NICK,USER,JOIN,PART,MODE

和一些来自用户的示例输入:NICK John

我可以检索输入,但我想要一种干净、有效的方式来告诉程序调用 method_nick(John),然后将其发送到服务器。

只要有一个正确的方向,我们将不胜感激。我只是不知道如何在没有 switch/if-elses 的情况下处理这个问题。

So I'm coding a simple IRC client in Java. As of now, I'm trying to determine what commands the user is typing in. I know I can use a bunch of if-else statements, but that's not very good practice. I thought of using a switch, but I'm trying to find an alternative to that.

For example: I have some commands, PASS, NICK, USER, JOIN, PART, MODE

and some example input from the user: NICK John

I can retrieve the input, but I want a clean, efficient way to be able to tell the program to call the method_nick(John), which would then send that to the server.

Just a point in the right direction would be appreciated. I'm just at a loss as to how to handle this without a switch/if-elses.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

待天淡蓝洁白时 2024-10-22 14:14:25

省略 if-else 的一个好方法是使用 switch-case ;)

您可以使用带有命令字符串的映射作为操作的键和命令对象。这称为命令模式

Map<String,Action> m=new Map<String,Action>();
m.put("NICK", new Action() { public void execute() {... } });
m.put("PASS", new Action() { public void execute() {... } });

然后:

 m.get(command_from_irc).execute();

另一种方法是使用反射。

A good way to ommit if-else is to use switch-case ;)

You could use map with the command strings as a keys and a command object for the action. This is called the Command Pattern.

Map<String,Action> m=new Map<String,Action>();
m.put("NICK", new Action() { public void execute() {... } });
m.put("PASS", new Action() { public void execute() {... } });

and then:

 m.get(command_from_irc).execute();

Another approach is to use reflection.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文