gpt4 book ai didi

Java:带参数的可运行 HashMap

转载 作者:行者123 更新时间:2023-12-01 17:55:23 28 4
gpt4 key购买 nike

我需要创建一个可运行的 HashMap,其中包含一些参数。

(我正在编写一个游戏,我想要:“当玩家输入特定命令时,它会运行带有参数的特定 void,缓存在我的 HashMap 中。”)

代码将(也许)比我更明确:

1=>制作命令列表的映射,每个键应该运行:

-“myVoidWithArgs(arg1,arg2)”

-“myOtherVoidWithArgs(arg1,arg2)”

-等等。 (arg1 和 arg2 应该是字符串)

HashMap<String, Runnable> cmdList = new HashMap<>();
cmdList.put("teleport", () -> myVoidWithArgs(arg1, arg2));
cmdList.put("kill", () -> myOtherVoidWithArgs(arg1, arg2));

2=> 然后,在另一个空白处,获取如下命令:

cmdList.get("teleport").run("Player", "coords");
cmdList.get("kill").run("Player", "Message");

我怎样才能做到这一点?还有其他方法吗?

谢谢

最佳答案

由于可运行对象需要两个参数,因此 Runnable接口(interface)不是您在 map 中的值所需要的。使用BiConsumer<String, String>反而;那么你可以这样做:

Map<String, BiConsumer<String, String>> cmdList = new HashMap<>();

cmdList.put("teleport", (arg1, arg2) -> myVoidWithArgs(arg1, arg2));
cmdList.put("kill", (arg1, arg2) -> myOtherVoidWithArgs(arg1, arg2));

你可以这样调用它们:

cmdList.get("teleport").accept("Player", "coords");
cmdList.get("kill").accept("Player", "Message");

您还可以使用方法引用而不是 lambda 来填充映射:

cmdList.put("teleport", SomeClass::myVoidWithArgs);
cmdList.put("kill", SomeClass::myOtherVoidWithArgs);

(假设这些方法是 staticSomeClass 方法;如果不是,则将 SomeClass 替换为对包含这些方法的对象的引用)。

关于Java:带参数的可运行 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45410573/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com