java - 映射返回 boolean 值的 Lambda 表达式

标签 java lambda java-8 functional-interface

我正在尝试将字符串映射到 Lambda 表达式。这些表达式采用一个变量(map),然后返回 false 或对给定的 map 变量运行 getOrDefault。但由于某种原因,我收到了错误。

Map<String, Runnable> order_function = new HashMap<>();
order_function.put("AlternativesValues", (Map x) -> { return false; });
order_function.put("AlternativesConstituent", (Map x) -> { x.getOrDefault("orderCloseCons", false); });

最佳答案

Runnable 不返回任何内容。如果将 lambda 展开为匿名类实现,您将看到 void是返回类型:

Runnable runnable = new Runnable() {
    @Override
    public void run() {
        // implementation
    }
};

这与您的 lambda 冲突> (Map x) -> { return false; } .

因为您需要一个采用 Map 的表达式并返回 boolean ,那么你需要 Predicate<Map<? ,Boolean>> (保留通配符 ? 或将其替换为所需的任何内容):

Map<String, Predicate<Map<? ,Boolean>>> order_function = new HashMap<>();
order_function.put("AlternativesValues", x -> false);
order_function.put("AlternativesConstituent", map -> map.getOrDefault("orderCloseCons", false));

关于java - 映射返回 boolean 值的 Lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55652453/

相关文章:

java - 在 Eclipse 3.6 中使用 Cygwin

java - Spring 4.0 : Resolve Type of GenericDao

python - 为什么在Python中使用Button函数时,文本参数响应循环而命令参数不响应

c++ - 一个 lambda 从本质上来说,关闭自己是否有效?

java - 如何使用 lambda 来过滤 Java 中的 boolean 数组

java - Google Drive java 从控制台获取信息

c# - 如何检查我的 lambda 表达式是否为空?

Java 8 流 IllegalStateException : Stream has already been operated on or closed

java - 如何将函数式概念应用到 Java 8 中的传统过程算法中?

java - SQLJet 表插入参数