我正在尝试将字符串映射到 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/