java - 在 HashMap 中声明 lambda 的正确方法

标签 java lambda java-8

我正在尝试声明一个 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/

相关文章:

java - 如何从父类(super class)继承接口(interface)

Java 8 lambdas 执行

python - 在 python 中使用 reduce() 序列化一个字符串

python - AWS Lambda 函数返回 "errorMessage": "[Errno 30] Read-only file system: '/home/sbx_user105 1'"

java - 将映射器流应用于 Java8 中的另一个流

java - Linux 和 Windows 上的 Jasper 是否有通用的字体格式来生成 pdf?

java.lang.NullPointerException : While displaying all my user files

java - 使用来自 hadoop reduce 的复合主键插入到 cassandra 表

Java-8 流 : Convert Map<String, List<List<DataType>>> 到 Map<String, List<DataType>>

java - 无法使用通用 lambda 解析重载方法