我正在尝试声明一个 HashMap
,它将接受一个字符串并返回一个 Callable
。
我有:
Map<String, Callable<String>> commands = new HashMap<>();
commands.put("get", (String item) -> get(item));
其中 get 是一个返回 void 的函数。
但是我得到了
"Bad return type in Lambda expression: Void cannot be converted into a string."
为什么期望函数返回一个字符串?我想向 lambda 传递一个 String
并返回 void
。
最佳答案
A Callable<String>
有一个返回 String
的方法( V call() throws Exception
),因此您不能使用返回类型为 void 的 lambda。您可以使用 Consumer<String>
相反。
Map<String, Consumer<String>> commands = new HashMap<>();
commands.put("get", (String item) -> get(item));
关于java - 在 HashMap 中声明 lambda 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38220486/